
プログラミング初心者です。
フィボナッチ数列を使ったプログラミングのお題が出ましたが、
このフィボナッチ数列(学校で習った記憶がありません)につまづき、
途中まで書いたプログラムが正しいか、どこか抜けいているのか、わからなくなってしまいました。
アドバイス頂けると幸いです。
お題)
整数を入力後、フィボナッチ数とフィボナッチ数の合計を計算して表示せよ。
なお、整数3以下の場合を入力した際は、エラーメッセージ”3以上を入力”を表示する。
*最初2項は、フィボナッチ数は1、1となる。
下記、スードコードで書いてみたドラフトです。フィボナッチ数列の式の中に出てくるnがindexを意味すると解釈し、index=n=0としたのですが、、
Fibonacci
Declare num, Fibonacci number As integer
num=0
fibN=0
index=n=0
sum=0
Prompt num
Get num
If(num<=3)
Display”Error : whole number must be greater or equal to 3.”
Else
For(index=2; index<=num; index++)
fibN=(1.0/sqrt(5))*(pow(1+sqrt((5))/2.0,n)-pow((1-sqrt(5))/2.0,n))
Display fibN
EndFor
Display sum=sum+finN
EndIf
END
アドバイス、およびサンプルのプログラミングも掲載して頂けると幸いです。
なにせ初心者なので、わかりやすく説明頂けると有難いです。
よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
ですから,言語の種類は問わないんですね。
私がさっとコーディングできる,ある言語で書かれたサンプルプログラムを提示しておきます。
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);
}
}
}
サンプルの提示、ありがとうございます!
ちなみにこのお題は、Loopを習った後に課されましたが、
このような複雑なプログラミングの書き方はまだ習っていません(~_~;)
とにかく、勉強になりました。ありがとうざいました。
No.2
- 回答日時:
わざわざフィボナッチ数列の一般項の式から算出する必要はないです。
浮動小数点数の演算は誤差が出やすいので,整数加算の方が正しい結果が得られます。
わかる点では,sumの位置が明らかにおかしいです。
fibNを計算した直後に加算しなければいけません。
No.1
- 回答日時:
まず、フィボナッチ数ですが、まあ個人的な理解では数列の今の値と前の値を足したのが次の値になってる数列で0,1から始まると言うことです。
これだけなら小学生でもわかります、んでもっておそらくプログラムではそこだけ知ってればいいんじゃないですかね。
でも、この場合は最初の値は1,1にしろと言ってるんですかね、問題が不完全なのでわかりませんが、
とりあえずindex1と2は"1"と言うことにしましょう。
次にフィボナッチ数を出したいならさっき言った処理を繰り返せばいいわけです。
for文を使って試行錯誤してください。
しかし、どうにも質問の内容は別な内容をやろうとしているように見えます。
何をしたいのかもう一回完全な形で定義してください。
問題を分解して把握するというのはプログラムの技術とは関係ありません。
しかし、技術系には必要なテクニックです。
フィボナッチ数の説明、ありがとうございました。
>問題を分解して把握するというのはプログラムの技術とは関係ありません
これを聞いてほっとしました。
ですが、現時点では、宿題に出される数学が分からず、
プログラミングを学ぶ以前の問題です。。。
投稿した質問内容について、もう一度テキスト読み返し、
私自身がきちんと理解してから、再度投稿致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラミングって本来数学的な計算をする為のものではないのですか? 学校で配られたFortran90 11 2022/08/25 22:14
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Excel(エクセル) INDEX関数とMATCH関数を使用し値を返す数式についてです 2 2022/04/20 13:40
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- Excel(エクセル) エクセルでエラーを無視して一番左側のセルの値を返したい 2 2023/07/27 13:06
- Visual Basic(VBA) ExcelのVBAでをA列に第0〜19項のフィボナッチ数列を代入するプログラムを作りたいです。 どな 2 2022/11/10 10:26
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- Excel(エクセル) Excel 、この式はどのように解釈すればいいのでしょうか 4 2023/02/03 08:53
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
java キーボード入力された値の...
-
論理演算子”||”またはの入力方法
-
配列を逆順させて表示させる方...
-
【JAVA <identifier>がありま...
-
数値⇒漢数字変換 java
-
Java 入力した整数値の合計を、...
-
Ctrl+Zが入力されると終了する...
-
要素数が10の配列で、乱数0~9...
-
Randomメソッドの確率設定
-
総称型ArrayList<E>への参照...
-
C#の質問
-
繰り返しによる星印の出力
-
7つ数字を表示したら改行すると...
-
テキストボックスに入力された...
-
JSPやサーブレットでSystem.out...
-
プログラミングの問題です。大...
-
Javaで改行などが出来ないのです。
-
System.err. printlnとSystem.o...
-
ORA-01858: 数値を指定する箇所...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
論理演算子”||”またはの入力方法
-
数値⇒漢数字変換 java
-
java キーボード入力された値の...
-
Randomメソッドの確率設定
-
テキストボックスに入力された...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
7つ数字を表示したら改行すると...
-
countに実行した回数をいれたい...
-
JAVAのfor文で困っています。
-
(急いでいます)Javaで3回間違...
-
Java 入力した整数値の合計を、...
-
Java、2の0乗~10乗の表示
-
点数をだす時に、maxとminがお...
-
javaです。 途中まで出来ている...
-
Ctrl+Zが入力されると終了する...
-
配列を逆順させて表示させる方...
-
Java 配列 勝敗、引き分け判定...
-
繰り返しによる星印の出力
-
javaプログラムについて
おすすめ情報