- 締切済み
フィボナッチ数列X(n+1)= X(n+1)+X(n) (X(1)=X
フィボナッチ数列X(n+1)= X(n+1)+X(n) (X(1)=X(2)=1) の1項X(1)からX(30)までの値を表示するプログラムを再帰関数を使って作る方法を教えてください。 再帰関数がよくわかりません。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- 和泉 博(@hiroshi09s)
- ベストアンサー率54% (59/109)
もうひとつの回答例。これを一般のソースに直せば良い。 /* Gcc on MacOSX * file name: fibonacci.c * compile : gcc fibonacci.c * execution: ./a.out <n> * n >= 0 * example: ./a.out 30 */ #include <stdio.h> #include <stdlib.h> // atoi() int stage; int fibonacci(int, int, int); int main(int argc, char *argv[]) { if (argc != 2) return 1; stage = atoi(argv[--argc]); printf("fibonacci(%d) = %d\n", stage, fibonacci(0, 0, 1)); return 0; } int fibonacci(int generation, int present, int past) { printf("\tfibonacci(%d)= %d\n", generation, present); return stage == generation ? present : fibonacci(++generation, present + past, present); }
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
> 再帰関数がよくわかりません。 直接または間接的に自分自身を呼び出す関数です。 例: 階乗 f(n) = n*f(n-1) ( f(0) = 1) ) int factorial(int n) { if ( n == 0 ) return 1; return n * factorial(n-1); }
- toda hiro(@hiro_knigh)
- ベストアンサー率39% (59/151)
googleで「フィボナッチ数列 c言語」で検索すると一発で出てきたっぽいけど。。。
- koko_u_u
- ベストアンサー率18% (216/1139)
フィボナッチ数列自体が再帰的に定義されているので、これを再帰的に呼び出すだけです。 その後、実行効率についても考察しましょう。