斐波那契数列非递归 c
时间: 2023-11-15 20:55:23 浏览: 59
斐波那契数列非递归 C 代码如下:
```c
#include <stdio.h>
int fibonacci(int n) {
if (n == 0 || n == 1) {
return n;
}
int a = 0, b = 1, c;
for (int i = 2; i <= n; i++) {
c = a + b; a = b;
b = c;
}
return b;
}
int main() {
int n = 10;
printf("斐波那契数列第%d项为%d\n", n, fibonacci(n));
return 0;
}
```
相关问题
用c语言实现斐波那契数列的递归算法和非递归算法
斐波那契数列是一个经典的数列,可以使用递归算法和非递归算法来实现。下面是用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 n;
printf("请输入要计算斐波那契数列的项数:");
scanf("%d", &n);
printf("斐波那契数列的第%d项为:%d\n", n, fibonacci_recursive(n));
return 0;
}
```
2. 非递归算法:
```c
#include <stdio.h>
int fibonacci_iterative(int n) {
if (n <= 1)
return n;
int prev = 0;
int curr = 1;
int result = 0;
for (int i = 2; i <= n; i++) {
result = prev + curr;
prev = curr;
curr = result;
}
return result;
}
int main() {
int n;
printf("请输入要计算斐波那契数列的项数:");
scanf("%d", &n);
printf("斐波那契数列的第%d项为:%d\n", n, fibonacci_iterative(n));
return 0;
}
```
以上代码分别演示了递归算法和非递归算法实现斐波那契数列。你可以根据需要选择其中的一种方法来使用。
C语言分别编写出斐波那契数列的递归和非递归算法并分别求时间和空间复杂度
递归算法:
```c
int fibonacci_recursive(int n) {
if (n <= 1) {
return n;
} else {
return fibonacci_recursive(n-1) + fibonacci_recursive(n-2);
}
}
```
时间复杂度:O(2^n),空间复杂度:O(n)
非递归算法:
```c
int fibonacci_nonrecursive(int n) {
if (n <= 1) {
return n;
} else {
int prev = 0, curr = 1, result;
for (int i = 2; i <= n; i++) {
result = prev + curr;
prev = curr;
curr = result;
}
return result;
}
}
```
时间复杂度:O(n),空间复杂度:O(1)
阅读全文