实现斐波那契数列的几种方法

# encoding:utf-8
def fib(n):
    """迭代法
    >>> fib(8)
    13
    """
    prev, curr = 1, 0  
    for _ in range(n - 1):
        prev, curr = curr, prev + curr
    return curr

def memo(fib):
	"""缓存法"""
	cache = {}
	def memo_cache(n):
		if n not in cache:
			cache[n] = fib(n)
		return cache[n]
	return memo_cache

@memo
def rec_fib(n):
	"""递归法
	>>> rec_fib(8)
	13"""
	if n == 1:
		return 0
	if n == 2:
		return 1
	else:
		return rec_fib(n-2) + rec_fib(n-1)


if __name__ == '__main__':
	import doctest
	doctest.testmod()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值