- ベストアンサー
フィボナッチ数列の配列について
public class Fibonacci { public static void main(String[] args) { int [] fibAray = new int [20]; //フィボナッチ数列用の配列 fibAray[4] = 3; fibAray[1] = 1; for (int i = 0; i < fibAray.length; i++) { fibAray[i] = i + 1; } for (int i = 0; i < fibAray.length; i++) { System.out.println( "第" + (i + 1) + "頁は" + 3); } } } フィボナッチ数列の第20項までを配列にし、それらを"第4項は3"のように表示する。 という問題で作ったプログラムですが1項~20項まで3と表示されます。 これで合ってるのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
forで出力している内容をよく見てみる。 System.out.println( "第" + (i + 1) + "頁は" + 3); これは、"第" + (i + 1) + "頁は" + 3 というものを書き出している。それはわかるかね? では、1つ1つ見てみる。 "第"――「第」というテキスト (i + 1)――変数i(現在の繰り返し回数)に1を足した値 "頁は"――「頁は」というテキスト 3――「3」という数字 よーく見てみな。 書き出している内容の中には、フィボナッチ数列の値は「ない」んだよ。フィボナッチ数列の値なんて全く書き出してない。わかるかね? では、一体、フィボナッチ数列は、どこで、何と何の値を足して、どこに保管すればいいのか? それを考える。それがわかれば、その保管している値をforのところで書き出せばいい。
その他の回答 (4)
- ansariga10
- ベストアンサー率47% (10/21)
なるほど、フィボナッチ数列の定義はわかってらっしゃるようです。 しかし、あなたが配列に代入しているのは、どうみても初項1、 公差1の等差数列ですよ。もう一度フィボナッチ数列の作り方を よく考えてみてください。 しかも System.out.println( "第" + (i + 1) + "頁は" + 3); となっているわけですから、表示しているのは配列とは無関係の 定数3になっています。 配列の要素を次々に表示しないと意味が無いですよね。 "第4項は3"のように表示するというのは具体例を挙げているので あって、すべて3を表示しろという意味ではないでしょう。 第1項は1 第2項は1 第3項は2 第4項は3 第5項は5 ... のように、すべての項を表示しなさいというのが出題意図だと思いますよ。
補足
Javaは全くの素人なのでもう少しヒントをもらえませんか? どうか宜しくお願いします。
- koko_u_
- ベストアンサー率18% (459/2509)
>合っているのか、わからないので聞いてます。 それではフィボナッチ数列とはどんな数列かを補足にどうぞ。
補足
[数列の値] [性質] 第1項 1 第2項 1 第3項 2 第1項+第2項 第4項 3 第2項+第3項 . . . . . . 第20項 6765 第18項+第19項 . . . . . .
- koko_u_
- ベストアンサー率18% (459/2509)
>これで合ってるのでしょうか? 合っていると思う方がどうかしている。
補足
合っているのか、わからないので聞いてます。
>"頁は" + 3); ^^^^ 当然3しか表示されませんよねw
補足
第4項は3のように表示するですから3と表示されて合ってませんか? 第4項は3のように表示するの問題の意味がよくわかりません。
お礼
たった今、できました。 Javaプログラマーの皆様、素人の質問にお腹立ち申し訳ありません。 何分にも年寄りの素人なものでお許しください。 public class Fibonacci { public static void main(String[] args) { int [] fibAray = new int [20]; //フィボナッチ数列用の配列 fibAray[0] = 1; fibAray[1] = 1; for ( int i = 2; i < fibAray.length; i++) { fibAray[i] = fibAray[i-1] + fibAray[i-2] ; } for (int i = 0; i < fibAray.length; i++) { System.out.println( "第" + (i + 1) + "頁は" + fibAray[i] ); } } }
補足
何分にも大昔、私の学生時代にフィボナッチ数列なんぞ数学か理科か知りませんが習った覚えがありません。 PC好きで始めた「始めの一歩Java講座」初めて数列を知りました。 夕べから一晩中3の部分に色々当てはめてやっておりますができません。 どこからどこまでは合っているのか下の行のforの部分を変えるのですか? 上の行のforの部分は合ってますか? 3の部分が間違ってる事はわかりますが他は合ってるのですか? Javaは年寄りの通信教育では難しすぎるものがあります。