用循环和递归算法求斐波那契额数列的前 10 项
时间: 2024-05-05 14:21:14 浏览: 22
斐波那契数列是指数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...,其中每一项都是前两项的和。
以下是使用循环和递归算法分别求斐波那契数列前 10 项的示例代码:
使用循环算法:
```python
def fibonacci(n):
# 初始化前两个数
a, b = 1, 1
# 输出前两个数
print(a)
print(b)
# 循环计算并输出后面的数
for i in range(2, n):
c = a + b
print(c)
a, b = b, c
# 输出前 10 项斐波那契数列
fibonacci(10)
```
使用递归算法:
```python
def fibonacci(n):
# 递归结束条件
if n == 1 or n == 2:
return 1
# 递归计算并返回结果
return fibonacci(n-1) + fibonacci(n-2)
# 输出前 10 项斐波那契数列
for i in range(1, 11):
print(fibonacci(i))
```
两种算法的时间复杂度都是 O(n),但递归算法的空间复杂度会更高,因为需要多次调用函数。
相关问题
用循环和递归算法求斐波那契额数列的前 10 项。
我们知道斐波那契数列的定义是:第1项和第2项都是1,从第3项开始,每一项是前两项的和。因此,斐波那契数列的前10项分别为:1,1,2,3,5,8,13,21,34,55。
下面是用循环和递归算法分别实现斐波那契数列的前10项:
1. 循环算法
```python
# 循环算法实现斐波那契数列的前10项
a, b = 1, 1
for i in range(10):
print(a, end=' ')
a, b = b, a+b
```
输出结果为:1 1 2 3 5 8 13 21 34 55
2. 递归算法
```python
# 递归算法实现斐波那契数列的前10项
def fibonacci(n):
if n == 1 or n == 2:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
for i in range(1, 11):
print(fibonacci(i), end=' ')
```
输出结果为:1 1 2 3 5 8 13 21 34 55
需要注意的是,递归算法的时间复杂度较高,因此在实际应用中可能不太适用。
C语言用循环和递归算法求斐波那契额数列的前 10 项
用循环实现斐波那契数列:
```c
#include <stdio.h>
int main() {
int i, n, t1 = 0, t2 = 1, nextTerm;
printf("斐波那契数列前10项:\n");
for (i = 1; i <= 10; i++) {
printf("%d, ", t1);
nextTerm = t1 + t2;
t1 = t2;
t2 = nextTerm;
}
return 0;
}
```
用递归实现斐波那契数列:
```c
#include <stdio.h>
int fibonacci(int n) {
if (n == 0) {
return 0;
}
else if (n == 1) {
return 1;
}
else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
int main() {
int n = 10, i;
printf("斐波那契数列前10项:\n");
for (i = 0; i < n; i++) {
printf("%d, ", fibonacci(i));
}
return 0;
}
```