1 行目に整数 N が与えられます。
N 番目までのフィボナッチ数を出力してください。
フィボナッチ数は
F_0 = 0 F_1 = 1 F_(n+2) = F_n + F_(n+1) (n は 0 以上)
とし、F_0 を 1 番目とします。
- N は 3 以上 10 以下の整数
入力例1
3
出力例1
0 1 1
【調べて書いたコード】
Ruby
1n = gets.to_i 2 a, b = 0, 1 3 puts a 4 (n-1).times do 5 a, 6 b = b, 7 a + b 8 puts a 9 end
出力結果
0 1 1
【困っていること】
①フィボナッチ数の実装 こちらの記事にある、n.times { a, b = b, a + b }
というコードは次のコードと同じと考えて問題ないでしょうか。
問題あればご指摘いただきたいです、お願いいたします。
Ruby
1 n.times do 2 a, 3 b = b, 4 a + b 5 puts a 6 end
②
Ruby
1a, b = 0, 1 2 puts a 3 (n-1).times do 4 a, 5 b = b, 6 a + b 7 puts a 8end
このコードの解釈についてです。timesメソッドのまえで、a, b = 0, 1と初期値を代入しています。
したがって、timesメソッドの中で、a, b=b, a+b
の値は次のようになっていると思います。
Ruby
1a = 0 2b = 1 3a + b = 1 4puts a #=> 0
これを何度timesメソッドで繰り返したところで、a = 1のままなのではないかと思うのですが、実際はそうなっていません。どこの解釈に問題があるでしょうか。
ご教授いただけたら嬉しいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/16 14:22 編集
2022/06/16 14:52