- ベストアンサー
フィボナッチ数列を使ったプログラミングのアドバイスとサンプルプログラム
- フィボナッチ数列を使ったプログラミングのお題につまづいていますか?初心者でも理解しやすいアドバイスとサンプルプログラムを紹介します。
- フィボナッチ数列のプログラムを書く際に気をつけるポイントや、エラーメッセージの表示方法について解説します。
- また、フィボナッチ数列の計算方法やループ処理の使い方についても説明し、初心者にもわかりやすくプログラムを作成する方法をご紹介します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
http://eow.alc.co.jp/pseudo+code/ ですから,言語の種類は問わないんですね。 私がさっとコーディングできる,ある言語で書かれたサンプルプログラムを提示しておきます。 class Fibonacci { public static void main(String args[]) { int num = Integer.parseInt(args[0]); if (num <= 2) { System.out.println("Error"); System.exit(1); } int sum = 0; for (int index = 1; index <= num; index++) { int fibN = fibo(index); System.out.print(fibN + " "); sum = sum + fibN; } System.out.println("\n" + sum); } public static int fibo(int n) { if (n <= 2) { return 1; } else { return fibo(n - 2) + fibo(n - 1); } } }
その他の回答 (2)
- Yune-Kichi
- ベストアンサー率74% (465/626)
わざわざフィボナッチ数列の一般項の式から算出する必要はないです。 浮動小数点数の演算は誤差が出やすいので,整数加算の方が正しい結果が得られます。 わかる点では,sumの位置が明らかにおかしいです。 fibNを計算した直後に加算しなければいけません。
お礼
整数加算とsumの位置ですね。 ご指摘ありがとうございます。 もう少し悩んでみます。
- k_kota
- ベストアンサー率19% (434/2186)
まず、フィボナッチ数ですが、まあ個人的な理解では数列の今の値と前の値を足したのが次の値になってる数列で0,1から始まると言うことです。 これだけなら小学生でもわかります、んでもっておそらくプログラムではそこだけ知ってればいいんじゃないですかね。 でも、この場合は最初の値は1,1にしろと言ってるんですかね、問題が不完全なのでわかりませんが、 とりあえずindex1と2は"1"と言うことにしましょう。 次にフィボナッチ数を出したいならさっき言った処理を繰り返せばいいわけです。 for文を使って試行錯誤してください。 しかし、どうにも質問の内容は別な内容をやろうとしているように見えます。 何をしたいのかもう一回完全な形で定義してください。 問題を分解して把握するというのはプログラムの技術とは関係ありません。 しかし、技術系には必要なテクニックです。
お礼
フィボナッチ数の説明、ありがとうございました。 >問題を分解して把握するというのはプログラムの技術とは関係ありません これを聞いてほっとしました。 ですが、現時点では、宿題に出される数学が分からず、 プログラミングを学ぶ以前の問題です。。。 投稿した質問内容について、もう一度テキスト読み返し、 私自身がきちんと理解してから、再度投稿致します。
お礼
サンプルの提示、ありがとうございます! ちなみにこのお題は、Loopを習った後に課されましたが、 このような複雑なプログラミングの書き方はまだ習っていません(~_~;) とにかく、勉強になりました。ありがとうざいました。