Pythonでコラッツ数列を勉強しているのですが、どうしても理解できないので教えてください。
コードを載せます。
コード def collatz(number): if (number%2)==0: return number/2 elif (number%2)==1: return 3*number+1 print("整数を入力してください:") number=int(input()) while True: number=collatz(number) print(int(number)) if number==1: break --------------------------------- ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 例)「3」を入力したとき、条件式に従い、 3→10→5→16→8→4→2→1 と出力されます。
まず、collatz(number)という関数を作って、
numberが偶数なら、collatz()をnumber/2で返して、
numberが奇数なら、collatz()を3*number+1で返します。
それを関数が最後の1になるまで、繰り返していくプログラムです。
**下のwhile文で繰り返しをするときの、
number=collatz(number)・・・①
print(int(number))・・・②
のコードのnumberにはそれぞれどういう値が入るのでしょうか?
例えば、「3」を入れたときに、①のcollatz(number)のnumberには3が入り、
左側のnumberには「3」ではなく関数の結果である「10」が入るのかなと思っています。
なので、②のprint(int(number))のnumberには「10」が入り、結果的に「10」が出力されると思っています。
最初に出力される値は「3」なので、それは②のprint(int(number))で出力されたものではなく、
number=int(input())で入力されたものであると考えてよろしいでしょうか?
恐らく、まだ私は基礎的なことを理解していなく、
関数が難しくて混乱している状態なので、ぜひご教示いただきたいです。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/26 07:51