フィボナッチ数列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)までの値を表示するプログラムを再帰関数を使って作る方法を教えてください。
再帰関数がよくわかりません。
もうひとつの回答例。これを一般のソースに直せば良い。
/* 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);
}
> 再帰関数がよくわかりません。
直接または間接的に自分自身を呼び出す関数です。
例: 階乗 f(n) = n*f(n-1) ( f(0) = 1) )
int factorial(int n) {
if ( n == 0 ) return 1;
return n * factorial(n-1);
}
- 最新から表示
- |
- 回答順に表示












