• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プログラムの処理内容を教えて下さい(素人レベル?))

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

このQ&Aのポイント
  • Javaのプログラム内容がわからないので教えて下さい。フィボナッチ数列を計算するプログラムですが、特定の式の使い方や処理の順番が理解できません。
  • 具体的なわからないポイントは、(1) 11、13行目の「n + f_n」の式の意味と結果。(2) 15、16行目の「f_0 = f_1 の後に f_1 = f_n」の処理順番です。
  • 質問の詳細コードとコンソールの出力も添付しました。お手数ですが、プログラムの処理手順と具体的な理解をご教示願えますか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>フィボナッチ数列の式 という先入観で見ているから判らないのかな。 >nが既に3より大きい数値ですし n=4の時に、一つ前(n=3の時計算した結果)を表示しているのだけど。 判らない時(や、初心者)は、添付画像の様に自分がコンピュータに成ったつもりで(紙などに)各変数がどの様に変化してゆくか書きながらプログラムをなぞると解るようになるよ。 私としては、"if (n == 10) {"が解らん。何のためにあるんだろう。

noname#240076
質問者

お礼

ありがとうございます。 それぞれの行がそのまま時系列になっていて非常にわかり易かったです。

その他の回答 (3)

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.4

>(1) 11、13行目の「n + f_n」 あなたには "n=" + n + " f(n)=" + f_n が n + f_n に見えるんですか? だとしたら "n=" と " f(n)=" は、どこに消えたんでしょうか? >(2) 15、16行目の「f_0 = f_1 の後に f_1 = f_n」 f(n) = f(n - 1) + f(n - 2) f(n+1) = f(n) + f(n - 1) を見比べて何か気づきませんか。

noname#240076
質問者

お礼

ありがとうございます。 forより上のintの値を代入してしまってわからなくなっていた事に気付けました。

  • Kaneyan-R
  • ベストアンサー率42% (1341/3131)
回答No.3

〉私としては、"if (n == 10) {"が解らん。何のためにあるんだろう。 文字揃えかな? 真が半角で、偽が全角だから。

  • Kaneyan-R
  • ベストアンサー率42% (1341/3131)
回答No.2

〉11行目の[ n + f_n ]に代入して ? どこにも n+f_n なんて出てきてませんが? nへの代入は、ループの初期値として与えた「2」だけで、他に代入してませんよ。 もしかして、 System.out.println("n=" + n + " f(n)=" + f_n); のこと? これは「文字列」ですよ。 文字列「n=」+「nの値」、文字列「f(n)=」+「f_nの値」を並べて出力しているだけです。 一回目 n=2 f_0=0 f_1=1 f_n=0+1=1 二回目 n=3 f_0=1 f_1=1 f_n=1+1=2 三回目 n=4 f_0=1 f_1=2 f_n=1+2=3 四回目 n=5 f_0=2 f_1=3 f_n=2+3=5 っと言うように、f_0とf_1にはそれぞれ前回計算した「f_1の値」と「f_nの値」が入ります。

noname#240076
質問者

お礼

ありがとうございます。 お恥ずかしながら、ご指摘の通り、文字列と勘違いしてしまいました。

関連するQ&A

専門家に質問してみよう