• 締切済み

フィボナッチ数列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)までの値を表示するプログラムを再帰関数を使って作る方法を教えてください。 再帰関数がよくわかりません。

みんなの回答

回答No.4

もうひとつの回答例。これを一般のソースに直せば良い。 /* 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); }

回答No.3

> 再帰関数がよくわかりません。 直接または間接的に自分自身を呼び出す関数です。 例: 階乗 f(n) = n*f(n-1) ( f(0) = 1) ) int factorial(int n) {   if ( n == 0 ) return 1;   return n * factorial(n-1); }

回答No.2

googleで「フィボナッチ数列 c言語」で検索すると一発で出てきたっぽいけど。。。

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.1

フィボナッチ数列自体が再帰的に定義されているので、これを再帰的に呼び出すだけです。 その後、実行効率についても考察しましょう。