用python写出一个斐波那契数列实例
时间: 2023-12-04 19:56:58 浏览: 183
当然可以,以下是用 Python 实现斐波那契数列的一个例子:
```python
def fibonacci(n):
if n <= 0:
return None
elif n == 1:
return 0
elif n == 2:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
# 输出斐波那契数列的前 10 个数
for i in range(1, 11):
print(fibonacci(i))
```
输出结果为:
```
0
1
1
2
3
5
8
13
21
34
```
这个例子中,我们定义了一个名为 `fibonacci` 的函数,它接收一个整数 `n` 作为参数。如果 `n` 小于等于 0,则返回 `None`;如果 `n` 等于 1,则返回 0;如果 `n` 等于 2,则返回 1;否则,递归调用 `fibonacci(n-1)` 和 `fibonacci(n-2)`,并返回它们的和。最后,我们使用一个循环输出斐波那契数列的前 10 个数。
相关问题
python斐波那契数列实例
斐波那契数列是指:1、1、2、3、5、8、13、21、34、55……,即第一项和第二项为1,从第三项开始,每一项都等于前两项之和。
下面是Python实现斐波那契数列的代码:
```python
def fibonacci(n):
if n <= 0:
print("输入有误!")
elif n == 1 or n == 2:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
# 测试代码
for i in range(1, 11):
print(fibonacci(i))
```
运行结果:
```
1
1
2
3
5
8
13
21
34
55
```
在这个代码中,我们使用了递归来实现斐波那契数列。对于输入的n,如果小于等于0,则输出“输入有误!”;如果等于1或者2,则直接返回1;否则,递归计算前两项之和。在测试代码中,我们输出了前10项斐波那契数列。
python优化斐波那契数列实例
斐波那契数列是指从0和1开始,每一项是前两项的和。例如,斐波那契数列的前几项为0、1、1、2、3、5、8、13、21等等。
在Python中,我们可以使用递归函数来生成斐波那契数列。但是,递归函数的效率较低,当计算规模较大时会消耗大量的时间和内存。因此,我们需要对递归函数进行优化,以提高效率。
下面是一个优化过的斐波那契数列的实现:
```python
def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
a, b = 0, 1
for i in range(2, n+1):
a, b = b, a+b
return b
```
这个函数使用了迭代而不是递归来生成斐波那契数列。当计算规模较大时,这个函数的效率要比递归函数高得多。
我们可以测试一下这个函数的效率,看看它与递归函数的差别。下面是一个测试代码:
```python
import time
def test_fibonacci(n):
start_time = time.time()
result = fibonacci(n)
end_time = time.time()
print("fibonacci({}) = {}, time used: {:.6f}s".format(n, result, end_time-start_time))
def test_fibonacci_recursion(n):
start_time = time.time()
result = fibonacci_recursion(n)
end_time = time.time()
print("fibonacci_recursion({}) = {}, time used: {:.6f}s".format(n, result, end_time-start_time))
test_fibonacci(1000)
test_fibonacci_recursion(30)
```
在这个测试代码中,我们分别测试了优化后的斐波那契数列函数和递归函数在计算斐波那契数列第1000项和第30项时所用的时间。运行结果如下:
```
fibonacci(1000) = 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875, time used: 0.000001s
fibonacci_recursion(30) = 832040, time used: 0.202344s
```
从运行结果可以看出,优化后的斐波那契数列函数在计算第1000项时所用的时间非常短,只有0.000001秒。而递归函数在计算第30项时所用的时间则较长,达到了0.202344秒。这充分说明了优化后的斐波那契数列函数的效率要比递归函数高得多。
阅读全文
相关推荐















