A 回答 (5件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
> int f(0) = 0,f(1) = 1;
>
> f(n) = f(n - 1) + fib(n - 2);
fib関数以外にf関数も登場していますね。f関数は不要です。
数列の1番目:1(固定)
2番目:1(固定)
3番目:2(1番目+2番目)
4番目:3(2番目+3番目)
5番目:5(3番目+4番目)
6番目:8(4番目+5番目)
7番目:13(5番目+6番目)
8番目:21(6番目+7番目)
9番目:34(7番目+8番目)
10番目:55(8番目+9番目)
という結果を得るために、fib関数では呼び出し元に
どういう値を返す必要があるか、検討してみてください。
No.3
- 回答日時:
★アドバイス
・フィボナッチ数列の代わりに 1 ~ n 番目までの数を加算するサンプルを載せます。
もちろん再帰的に処理する関数です。
これを参考に『フィボナッチ数列』の関数 int fib(int n) を作成して下さい。
・それでは下にサンプルを載せておきます。
サンプル:
#include <stdio.h>
// 1~n 番目までを再帰処理で加算する関数
int func_sum( int n )
{
if ( n > 0 ){
printf( "%d + ", n );
return n + func_sum( n - 1 );
}
else{
printf( "%d\n", n );
return 0;
}
}
// メイン関数
int main( void )
{
// 1~10 までを加算
printf( "sum = %d\n", func_sum(10) );
return 0;
}
その他
・動作を分かりやすくするために func_sum() 関数に printf() 関数を使っています。
実際に実行してみて動作の確認をして下さい。
表示される内容から再帰動作で 1 ~ n 番目の数の加算が分かると思います。
これを参考にして『フィボナッチ数列』の再帰関数を作ってみて下さい。
・以上。
この回答への補足
こんな感じで作ってみたんですけど、何処にprintf()を入れれば
0,1,1,2,3,5,8・・・と表示できるのかがわかりません。
よろしくお願いいたします。
#include <stdio.h>
int fib(int);
main()
{
printf("fib = %d\n", fib(10));
}
int fib(int n)
{
if(n == 0) return 0;
if(n == 1) return 1;
return fib(n - 1) + fib(n - 2);
}
No.4
- 回答日時:
アドバイス。
http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/ …
Cじゃないけど,Tiny Basicのプログラムを参考にしてみたらもっとわかりやすいかも?
#『使うべきではない』とか書かれているのが気になるが(^^;;
宿題なら仕方ないかなあ・・・
No.5
- 回答日時:
★アドバイス
・フィボナッチ数列の再帰関数は出来ましたね。
>0,1,1,2,3,5,8・・・と表示できるのかがわかりません。
↑
こんなにきれいには表示できないと思います。
何も printf() を入れなくてもよいのでは。
・ちょっと試行錯誤してみましたが意外に難しいですね。
下のサンプルで我慢して。
サンプル:
#include <stdio.h>
// フィボナッチ数列
int fib( int n )
{
if ( n == 0 ) return 0;
if ( n == 1 ){printf("\n1");return 1;}
n = fib(n - 1) + fib(n - 2);
printf( " + %d", n );
return n;
}
// メイン関数
int main( void )
{
// フィボナッチ数列
printf( "\nfib = %d\n", fib(9) );
return 0;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- Visual Basic(VBA) ExcelのVBAでをA列に第0〜19項のフィボナッチ数列を代入するプログラムを作りたいです。 どな 2 2022/11/10 10:26
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- その他(プログラミング・Web制作) プログラミングって本来数学的な計算をする為のものではないのですか? 学校で配られたFortran90 11 2022/08/25 22:14
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数桁10進数の*桁目だけを抽出...
-
「指定されたキャストは有効で...
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語での奇数の和
-
C言語での引数の省略方法
-
【C++】関数ポインタの使い方
-
足して100になるような乱数のア...
-
C言語
-
C言語 エラーの原因がわからな...
-
比較回数と交換回数表示について
-
数字列を3桁ごとにカンマで区切...
-
C言語のサイコロシミュレート
-
acceptをalarmでタイムアウトさ...
-
「{ } で囲むだけ」は正しい?
-
銀行のATMを想定したプログラム
-
未解決の外部シンボル _printf...
-
if と配列の組み合わせ
-
ラップ関数とはどんなものですか?
-
signal関数の使い方
-
インライン展開されているか確...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
「指定されたキャストは有効で...
-
C言語 配列と関数の練習問題
-
複数桁10進数の*桁目だけを抽出...
-
(int *)の意味
-
if と配列の組み合わせ
-
ラップ関数とはどんなものですか?
-
卒業研究でよく分からないとこ...
-
【C++】関数ポインタの使い方
-
c言語
-
足して100になるような乱数のア...
-
C言語初心者です、、、お助けく...
-
数字列を3桁ごとにカンマで区切...
-
C言語 エラーの原因がわからな...
-
実数の整数部,小数部の取得
-
課題でつまってます・・・
-
商と剰余を同時に求める(C言語)
-
C言語の配列をC++のvectorに高...
-
std::set<int> で、ある値が何...
おすすめ情報