动态规划 —— 阶乘

def fact(n, memo):
    if n == 0: return 1
    if n not in memo:
        memo[n] = n*fact(n-1, memo)
    return memo[n]

客户端(调用端):

if __name__ == '__main__':
    memo = {}
    print([fact(n, memo) for n in range(100)])

或者:

def fact(n, memo):
    if n not in memo:
        memo[n] = n*fact(n-1, memo)
    return memo[n]

if __name__ == '__main__':
    memo = {0:1}
    print([fact(n, memo) for n in range(100)])

注:本例虽然有动态规划的形式(记忆体),却无动态规划的实质,不存在重叠子问题,自然也就没有最优子结构,仍属简单的递归求解。

    原文作者:动态规划
    原文地址: https://blog.csdn.net/lanchunhui/article/details/51088255
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞