C言語でフィボナッチ数列の再帰的な方法を実装するにはどうすればよいですか?
C言語では、フィボナッチ数列は再帰的な方法で実装することができます。再帰の考え方は問題をより小さなサブ問題に分解し、基本的なケースに到達するまで解決し、その後サブ問題を段階的に統合することで、最終的に問題全体の解を得ることができます。
以下は、フィボナッチ数列を再帰的に実行する例です。
#include <stdio.h>
int fibonacci(int n) {
// 基本情况:当 n 为 0 或 1 时,直接返回 n
if (n == 0)
return 0;
if (n == 1)
return 1;
// 递归调用:将问题分解为子问题
return fibonacci(n - 1) + fibonacci(n - 2);
}
int main() {
int n;
printf("请输入斐波那契数列的项数:");
scanf("%d", &n);
printf("斐波那契数列的第 %d 项为:%d\n", n, fibonacci(n));
return 0;
}
上記のコードでは、フィボナッチ関数が再帰呼び出しを実装しています。 n が 0 または 1 の場合は、n を直接返します。それ以外の場合は、n-1 と n-2 のフィボナッチ数列を計算して結果を加算します。
main関数では、ユーザーがフィボナッチ数列の項数nを入力し、その後fibonacci関数を呼び出して第n項を計算し、結果を出力できます。