用程序算斐波那契数列最常见的就是迭代与递归算法。
为了评价各算法程序效率如何
安装 profiler 来计时和能看到每行的运行次数
先在系统下输入命令pip install line_profiler安装
使用也很简单,在要计时的函数定义前加上@profile这个装饰符
然后在系统下输入命令kernprof -l -v 被计时的源程序.py
开始看第一个程序,输入参数n算第n项的Fibonacci数。以下皆是在Python 3.7环境下运行
1. 非递归的迭代解法
def Fibonacci_sequence_01 (n: int) -> int: #参数n是表示求第n项Fibonacci数
'返回单项的for迭代解法'
assert isinstance(n, int), 'n is an error of non-integer type.'
if n>=2:
prev_num, current_num = 0, 1
for i in range(2, n+1):
prev_num, current_num = current_num, prev_num+current_num
return current_num
elif n==1:
return 1
elif n==0:
return 0
else:
return NoneFibonacci_sequence_01(1200)
用算到第1200项Fibonacci数来测量下用时
在我的电脑上T