----用教授的方式学习
目录
13.1 又见斐波那契数列
一个很直观的斐波那契数列的递归实现:
def fib(n): """假设n是非负整数返回第n个斐波那契数""" if n == 0 or n == 1: return 1 else: return fib(n-1) + fib(n-2) |
以上代码效率太低,假设fib(120)需要250000年才能结束。
使用备忘录法的斐波那契数列实现可增加效率:
def fastFib(n, memo = {}):
"""假设n是非负整数,memo只进行递归调用 返回第n个斐波那契数"""
if n == 0 or n == 1:
return 1
try:
return memo[n]
except KeyError:
result = fastFib(n-1, memo) + fastFib(n-2, memo)
memo[n] = result
return result
13.2 动态规划与 0/1 背包问题
给出一个决策树,在背包能够容纳的最大重量为5的假设之下,可以确定应该带走哪些物品。树的根节点(节点0)有一个标签<{}, [a, b, c, d], 0, 5>,表示没有选择物品,所有物品都处于待定状态,带走的物品总值为0,背包剩余空间还能容纳的重量为5。
标签:13,return,数列,第三册,memo,fib,Python,result,那契 From: https://blog.csdn.net/weixin_38135241/article/details/139803894