python斐波那契非递归算法
时间: 2023-10-31 13:59:37 浏览: 77
斐波那契数列是一个由兔子繁殖引入的数列,从第三个数开始,后面的数是前两个数的和。在Python中,我们可以使用非递归算法来计算斐波那契数列的第n项。以下是一个示例代码:
```python
def fibonacci_nonrecursive(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
prev_prev = 0
prev = 1
for i in range(2, n+1):
current = prev + prev_prev
prev_prev = prev
prev = current
return current
n = int(input("请输入要计算的斐波那契数列的项数:"))
result = fibonacci_nonrecursive(n)
print("第%d项的斐波那契数为:%d" % (n, result))
```
在这个非递归算法中,我们使用两个变量prev_prev和prev来保存前两个斐波那契数列的值,然后通过一个循环来计算第n项的值。当n等于0时,返回0;当n等于1时,返回1;否则,根据斐波那契数列的定义,计算第n项的值。最后,我们通过输入一个数n来调用这个函数,并输出计算结果。
通过这个非递归算法,我们可以快速计算出斐波那契数列的第n项,而不需要进行递归调用,从而提高了计算效率。
相关问题
python编写递归函数和非递归函数、输出斐波那契数列_python 入门之斐波那契数列递归表达式算法和非递归算法...
好的,下面是Python实现斐波那契数列的递归和非递归算法:
递归算法:
```python
def fibonacci_recursive(n):
if n <= 1:
return n
else:
return fibonacci_recursive(n-1) + fibonacci_recursive(n-2)
```
非递归算法:
```python
def fibonacci_iterative(n):
if n <= 1:
return n
else:
a, b = 0, 1
for i in range(2, n+1):
c = a + b
a, b = b, c
return b
```
在这两个函数中,变量n表示要求的斐波那契数列的第n项。递归算法中,如果n小于等于1,则返回n;否则递归调用函数本身来计算前两项的和。非递归算法中,如果n小于等于1,则返回n;否则通过循环计算前两项的和,并不断更新前一项和当前项的值。
接下来,我们可以通过调用这两个函数来输出斐波那契数列的前n项:
```python
n = 10
# 递归算法
print("斐波那契数列(递归算法):")
for i in range(n):
print(fibonacci_recursive(i), end=" ")
print()
# 非递归算法
print("斐波那契数列(非递归算法):")
for i in range(n):
print(fibonacci_iterative(i), end=" ")
```
输出结果如下:
```
斐波那契数列(递归算法):
0 1 1 2 3 5 8 13 21 34
斐波那契数列(非递归算法):
0 1 1 2 3 5 8 13 21 34
```
这样就可以输出斐波那契数列的前n项了。
斐波那契数列非递归算法
斐波那契数列是一个经典的数列,其中每个数字都是前两个数字的和。非递归算法可以使用循环来实现。以下是一个示例的斐波那契数列非递归算法的代码:
```python
def fibonacci(n):
if n <= 0:
return "输入的数必须大于等于1"
fib_list = [0, 1] # 初始化斐波那契数列的前两个数字
for i in range(2, n+1):
fib_list.append(fib_list[i-1] + fib_list[i-2])
return fib_list
n = int(input("请输入要计算的斐波那契数列的长度:"))
result = fibonacci(n)
print(result)
```
这段代码中,我们首先判断输入的数是否大于等于1,然后初始化斐波那契数列的前两个数字为0和1。接下来,使用循环依次计算并添加斐波那契数列的下一个数字,直到达到指定的长度。最后,返回完整的斐波那契数列。
请注意,输入的数必须大于等于1,否则会返回相应的提示信息。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)