
プログラミング初心者です。
フィボナッチ数列を使ったプログラミングのお題が出ましたが、
このフィボナッチ数列(学校で習った記憶がありません)につまづき、
途中まで書いたプログラムが正しいか、どこか抜けいているのか、わからなくなってしまいました。
アドバイス頂けると幸いです。
お題)
整数を入力後、フィボナッチ数とフィボナッチ数の合計を計算して表示せよ。
なお、整数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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
数値⇒漢数字変換 java
-
Java 入力した整数値の合計を、...
-
連立方程式を解くプログラムの...
-
総称型ArrayList<E>への参照...
-
ArrayListを利用する問題
-
C言語のポインターに関する警告
-
IF関数でEmpty値を設定する方法。
-
ORA-01858: 数値を指定する箇所...
-
System.err. printlnとSystem.o...
-
System.exit()の値を取得したい
-
動的配列が存在(要素が有る)か...
-
カタカナの小文字を大文字に変...
-
javaで質問です。 文字列2023/2...
-
1~100までの数字を表示したい
-
【C#】ハッシュテーブル(連想...
-
streamで送信されたArrayListを...
-
0dの意味を教えてください
-
VBAで配列の計算
-
[Ljava.lang.Stringってなんですか
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
論理演算子”||”またはの入力方法
-
java キーボード入力された値の...
-
テキストボックスに入力された...
-
総称型ArrayList<E>への参照...
-
16進数数字を結合して、10進数...
-
JAVAのfor文で困っています。
-
数値⇒漢数字変換 java
-
Java 配列<選挙>
-
Java キーボードから負の数が入...
-
Java 入力した整数値の合計を、...
-
C#の質問
-
2つのスクロールバーを連動させ...
-
java 拡張for map
-
java 配列
-
Javaの問題について
-
Javaの問題について
-
Java 4択問題の連続する2問の正...
-
javaについて質問です。
おすすめ情報