コラッツの予想
私がやろうとしていること:開始整数を受け取り、その数の開始点を含む整数のシーケンスを返す、collatz_sequenceと呼ばれる関数を記述します。シーケンスをリストの形式で返します。ユーザーが1未満の整数を入力した場合に、空のリスト[]を返すように関数を作成します。
コラッツ予想の背景:
任意の自然数nを取ります。nが偶数の場合は2で割ってn/2を求め、nが奇数の場合は3を掛けて1を足し、3n+1を求めます。このプロセスを無期限に繰り返します。推測では、どの番号から始めても、最終的には常に1に到達します。
私がこれまでに持っているもの:
def collatz_sequence(x):
seq = [x]
if x < 1:
return []
while x > 1:
if x % 2 == 0:
x= x/2
else:
x= 3*x+1
return seq
これを1未満の数で実行すると、正しい空のセットが得られます。しかし、1より大きい数で実行すると、その数しか得られません。つまり、collatz_sequence(6)は[6]を返します。数列全体を返すためにこれが必要なので、6はリスト内の6,3,10,5,16,8,4,2,1を返す必要があります。