c语言求斐波那契数列
时间: 2024-11-15 11:32:51 浏览: 10
C语言求Fibonacci斐波那契数列通项问题的解法总结
5星 · 资源好评率100%
在C语言中,斐波那契数列是一个经典的递归或循环计算的问题。下面我会演示两个常见的方法:递归和动态规划。
### 1. 递归法
```c
#include <stdio.h>
int fibonacci_recursive(int n) {
if (n <= 1)
return n;
else
return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2);
}
int main() {
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
if (num < 0) {
printf("错误:输入的数值必须是非负整数。\n");
} else {
printf("第%d个斐波那契数是:%d\n", num, fibonacci_recursive(num));
}
return 0;
}
```
### 2. 动态规划法(更高效)
```c
#include <stdio.h>
// 使用数组存储已经计算过的值
int fib[] = {0, 1}; // 初始化前两个斐波那契数
size_t len = 2; // 当前斐波那契数的数量
int fibonacci_dp(int n) {
if (n >= len) {
fib[len] = fib[len - 1] + fib[len - 2];
len++;
}
return fib[n];
}
int main() {
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
if (num < 0) {
printf("错误:输入的数值必须是非负整数。\n");
} else {
printf("第%d个斐波那契数是:%d\n", num, fibonacci_dp(num));
}
return 0;
}
```
阅读全文