プロが教える店舗&オフィスのセキュリティ対策術

C++で、再帰関数を使ったプログラムで、5桁以下のフィボナッチ数を表示するプログラムを教えてください。

A 回答 (3件)

何に困っている?

    • good
    • 0

ウィキペディアに答えそのものと言っても良いプログラミング例が載っています。


https://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3 …
この例を参考に書き換えると以下のような感じに。
値のオーバーフローは考慮しません。

long fibonacci(short n)
{
if (n == 0) {
return 0;
}
else if (n == 1 || n == 2) {
return 1;
}
else {
return(fibonacci(n - 2) + fibonacci(n - 1));
}
}

この関数を呼び出して結果が5桁超えるまで表示を繰り返すプログラムを作成すれば良いだけ。
表示方法や5桁超えているか?の判定方法は自分で考えましょう。
    • good
    • 0

10進5桁なら16ビットに収まるから、


今時の32ビットintなら無造作に扱える。
懐かしい16ビットintの環境でも、
long か unsigined short かで扱える
場合が多いだろうから、
多倍長演算の心配はない。

#define LIMF (100000L)

int f0 = 1, f1 = 1, f2;
printf("%d\n%d\n", f0, f1);
while( (f2 = f1 + f0) < LIMF ) {
    printf(%d\n", f2);
    f0 = f1;
    f1 = f2;
}
    • good
    • 0

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