次の宿題に関する質問を解読しようとしています。私のコードは190に評価されるはずですが、代わりに114に評価されます。したがって、私はコーディング要件を理解しているとは思いません。Pythonで目標としているCollatz予想の理解
このCollatz予想は 行動世界最高 数学者はまだそれを理解していないように予測不可能である、単純な計算処理の一例です。
は
n
が奇数の場合、整数n
を取り、n
場合2でそれを分割する単純な関数f(n)
(上記Wikipediaのページ で定義されている)にも及び 乗算3によってn
と、結果に1を加算され、検討します。 は、関数f
への呼び出し回数が増えるにつれて、式f(f(f(...f(f(n)))))
の式の値を調べることになります。予想は任意の非負の整数n
ため、n
からf
の 繰り返しアプリケーションは は常にこの質問1.あなたの仕事は PythonでこのCollatz機能
f
を実装することである含ん整数のシーケンスを生成する、ということです。実装の鍵は がn
が偶数であるか奇数であるかを、を2で割った剰余が0か1のいずれかであるかどうかを調べることによって決定するというテストを構築することです。ヒント:残りのオペレータ%
を の式n % 2
で使用して、この残りの部分をPythonで として計算できます。f
を計算する場合は、整数除算//
も使用する必要があります。
f
を実装したら、実装を の式f(f(f(f(f(f(f(674)))))))
でテストしてください。この式は、 〜190
と評価されます。
from __future__ import division
def collatz(n):
l = []
l.append(n)
while n != 1:
if n % 2 == 0:
n = n // 2
l.append(n)
else:
n = (3*n) + 1
l.append(n)
return l
print len(collatz(674))
あなたは 'F'が、全く異なる(関連が)機能を実装していません。 'f'はシーケンス全体ではなく、シーケンス内の次の項を計算しなければなりません。 –