アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語に関する質問です
フィボナッチ数列を表示するプログラムを作りましたが、これだと第n項しか表示されないので第0項から第n項まで表示されるようにしたいです。
どのようにすればよいでしょうか、どなたか教えてください!!


#include <stdio.h>

int fibo(int n){
if(n == 0) return 0;
if(n == 1) return 1;
if(n >= 2) return fibo(n - 2) + fibo(n - 1);
}

int main(void){
int n;
int fn;
printf("n = ");
scanf("%d", &n);
fn = fibo(n);
printf("F_n = %d\n", fn);
return 0;
}

A 回答 (2件)

scanf()の次の行にforループを入れる。



int i;
for (i = 0; i <= n; i++) {
fn = fibo(i);
printf("F_%d = %d\n", i, fn);
}
    • good
    • 0
この回答へのお礼

ありがとうございます、うまくできました!!

お礼日時:2021/01/22 18:23

案1. 外部変数として配列を用意し、fibo 内にて途中経過を記録する



int nums[N];
int fibo(int n) {
_ int x = fibo(n-1) + fibo(n-2);
_ nums[n] = x
_ return x;
}

案2. 再帰ではなく繰り返しで計算し、数値を順次記録する

for (int i=2; i<=n; i++) {
_ nums[i] = nums[i-1] + nums[i-2];
}
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます!

お礼日時:2021/01/22 18:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!