Python暗示

>>> def fib(n):
	if n == 0 or n == 1:
		return 1
	else:
		return fib(n-1)+fib(n-2)

	
>>> fib(10)
89
>>> fib(30)
1346269
>>> fib(32)
3524578
>>> fib(1)
1
>>> fib(3)
3


对于这股数列的求值,这个函数在调用时会进行很多的重复的计算,致使运算速度减慢,但是我们可以把已经运算出来的数值

记录下来,然后从字典里进行取值:

previous{0:1,1:1}
>>> def fib(n):
	if n in previous:
		return previous[n]
	else:
		newValue = fib(n-1) + fib(n-2)
		previous[n] = newValue
		return newValue

	
>>> fib(1)
1
>>> fib(2)
2
>>> fib(3)
3
>>> fib(50)
20365011074


你可能感兴趣的:(python,字典,暗示,递归数列)