引数をnとして、第n項までフィボナッチ数列を計算する関数を作りたいです。以下のようなプログラムを作ったのですがうまくいきません。fibo_rが繰り返し、fibo_aが再帰関数です。それぞれの関数でフィボナッチ数列を作るにはソースコードをどう作り直せばよいのでしょうか。
c
1#include <stdio.h> 2 3int fibo_r(int n); 4int fibo_a(int n); 5//繰り返し 6int fibo_r(int n) 7{ 8 int i = 0; 9 int a[2] = { 1,1 }; 10 for (i = 2; i <= n; i++) 11 { 12 a[i] = a[i - 1] + a[i - 2]; 13 printf("%d\n", a[n]); 14 } 15 16 return 0; 17} 18//再帰 19int fibo_a(int n) 20{ 21 int i = 0; 22 int fibo = 0; 23 if (n <= 2) { 24 return 1; 25 } 26 else { 27 for(i = 2; i <= n; i++) 28 { 29 fibo = fibo_a(i-2)+fibo_a(i-1); 30 return fibo_a(i) = fibo; 31 } 32 } 33 return fibo_a (i); 34} 35int main(void) 36{ 37 printf("Calucurate fibonatch!\n"); 38 39 printf("The answer is %d\n",fibo_r (10)); 40 41 printf("THe answer is %d\n", fibo_a (10)); 42 43 return 0; 44}
(以下具体的に困っていること)
●fibo_aについて、fibo_a(i)=で定義しようとするとエラーが起きてしまいます。
●現ソースコードだと、fibo_aの実行結果は2になってしまいます。
●fibo_rを実行すると4桁くらいの値が表示され、毎回値が異なってしまいます。
回答2件
あなたの回答
tips
プレビュー