Quantcast
Channel: 質問!ITmedia 新着質問(Java/253)
Viewing all articles
Browse latest Browse all 2439

プログラムの処理内容を教えて下さい(素人レベル?)

$
0
0
Javaのプログラム内容がわからないので教えて下さい。添付画像を参照をお願いします。 わからないポイントは、 (1) 11、13行目の「n + f_n」 (2) 15、16行目の「f_0 = f_1 の後に f_1 = f_n」 です。 (1)は、なんでこの式でコンソールのような解になるのかわかりません。フィボナッチ数列の式 [ F(0) = 0 , F(1) = 1 F(n) = F( n - 1 ) + F( n - 2 ) からは、1つ目2つ目の計算結果を順番に足し合わせたものだというのはわかるのです。また、その先の計算も、1つ前2つ前の計算結果を足していくんだなというのもわかります。 ですが、プログラム内では、例えば[ n = 4 ]とすると、11行目の[ n + f_n ]に代入して、コンソールの出力は「 3 」となっております。どういうことかわからないです。nが既に3より大きい数値ですし、[ n + f_n ]自体が、1つ前2つ前の式の計算結果なのかどうかもわからないです。 ですので、プログラムの処理手順がイメージできません。助けて下さい。 (2)は、nが増加するにあたって、1つ目2つ目の計算結果を更新しているんだと認識しております教えて頂きたいのは、この順番ですと、[f_0 = f_1] を処理した段階では、「 新 f_1 」と「既存 f_1 」が存在することになり、その後の[f_1 = f_n]にて、[ f_n ]しか残らなくなってしまうと思い込んでおります。 正しい処理内容をどうか教えて下さい。 画像が見えにくいのでここにも載せます↓ public class Example20171006 { public static void main(String[] args) { int f_0 = 0; int f_1 = 1; for(int n = 2 ; n <= 10; n++) { int f_n = f_1 + f_0; if (n == 10) { System.out.println("n=" + n + " f(n)=" + f_n); }else{ System.out.println("n=" + n + " f(n)=" + f_n); } f_0 = f_1; f_1 = f_n; } } } コンソール↓ n=2 f(n)=1 n=3 f(n)=2 n=4 f(n)=3 n=5 f(n)=5 n=6 f(n)=8 n=7 f(n)=13 n=8 f(n)=21 n=9 f(n)=34 n=10 f(n)=55 ======================================================== どうか、宜しくお願い致します。

Viewing all articles
Browse latest Browse all 2439

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>