C语言分别用递归与非递归实现 1. 计算斐波那契数列
时间: 2024-10-28 08:11:50 浏览: 38
C语言中,递归和非递归都是计算斐波那契数列的有效方法。
**递归实现:**
递归是一种函数调用自己的方法。对于斐波那契数列,我们可以定义每个数字是前两个数字之和,然后用递归公式表示:
```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 = 10; // 选择需要计算的斐波那契数的位置
printf("The %dth Fibonacci number is: %d\n", num, fibonacci_recursive(num));
return 0;
}
```
**非递归实现(循环):**
非递归方法通常更高效,因为它避免了重复计算。我们通过一个循环来存储前面已经计算过的值:
```c
#include <stdio.h>
int fibonacci_iterative(int n) {
if (n <= 1) return n;
int fib[n+1], fib_temp = 0, fib_prev = 1;
fib[0] = 0;
fib[1] = 1;
for (int i = 2; i <= n; i++) {
fib_temp = fib[i - 1] + fib[i - 2];
fib[i] = fib_temp;
}
return fib[n];
}
int main() {
int num = 10;
printf("The %dth Fibonacci number is: %d\n", num, fibonacci_iterative(num));
return 0;
}
```
阅读全文