当前位置: 首页 > 知识库问答 >
问题:

用python动态规划实现fibonacci

卢俭
2023-03-14

我正在尝试使用动态编程实现斐波那契序列。它显示一个错误。这里有什么问题?

def fibo(n): # n is the nth Fibonacci no. in the sequence
    fib = {} # dict to store earlier values
    for k in range(1, n + 1): # iterating each time
    if k <= 1 : 
                f = 0
    if k == 2 : 
            f = 1
    else:
        f = fib[k - 1] + fib[k - 2] # looking up in the fib{}
fib[k] = f
return fib[n] # returns the nth Fibonacci number

n = int(input('Enter n = '))
print('%dth fibo no. is = %d' %(n, fibo(n))) # calling n printing

共有1个答案

锺离声
2023-03-14

我只能假设您最初的错误是由您的压痕造成的。正确缩进后,代码运行时不会出错。

由于无论n的值如何,您都将在k==1k==2处执行相同的操作,因此在循环之外分配这些值更有意义,并稍后启动您的循环。

fib = {1: 0, 2: 1}

进行此更改后,在更正缩进后,您的函数类似于以下内容:

def fibo(n):
    fib = {1: 0, 2: 1}
    for k in range(3, n + 1):
        f = fib[k - 1] + fib[k - 2]
        fib[k] = f
    return fib[n]

n = int(input('Enter n = '))
print('%dth fibo no. is = %d' %(n, fibo(n)))
 类似资料:
  • 计算机科学中的许多程序是为了优化一些值而编写的; 例如,找到两个点之间的最短路径,找到最适合一组点的线,或找到满足某些标准的最小对象集。计算机科学家使用许多策略来解决这些问题。本书的目标之一是向你展示几种不同的解决问题的策略。动态规划 是这些类型的优化问题的一个策略。 优化问题的典型例子包括使用最少的硬币找零。假设你是一个自动售货机制造商的程序员。你的公司希望通过给每个交易最少硬币来简化工作。假设

  • *正则匹配问题[H] 三角形问题[M] 计算二进制数中1的个数[M] *括号匹配问题[M] 最短路径和[M]

  • 本文向大家介绍动态规划之矩阵连乘问题Python实现方法,包括了动态规划之矩阵连乘问题Python实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了动态规划之矩阵连乘问题Python实现方法。分享给大家供大家参考,具体如下: 给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2 ,…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数

  • 主要内容:动态规划算法的实际应用动态规划算法解决问题的过程和分治算法类似,也是先将问题拆分成多个简单的小问题,通过逐一解决这些小问题找到整个问题的答案。不同之处在于,分治算法拆分出的小问题之间是相互独立的,而动态规划算法拆分出的小问题之间相互关联,例如要想解决问题 A,必须先解决问题 B 和 C。 《贪心算法》一节中,给大家举过一个例子,假设有 1、7、10 这 3 种面值的纸币,每种纸币使用的数量不限,要求用尽可能少的纸币拼凑

  • 我正在尝试实施这个问题的解决方案,但我遇到了一些问题。 问题是: “在r行和c列的网格的左上角有一个机器人。机器人只能向右或向下移动,某些单元格是“禁止”的,这意味着机器人不能踩它们。设计一个算法来为机器人找到从左上角到右下的路径。” 解决方案如下所示: 让我困惑的是动态编程的尝试。 从不计算为。 我已经覆盖了Point类中的和方法,所以失败了。只要所比较的对象具有相同的行和列值,contains

  • 本文向大家介绍Python 剪绳子的多种思路实现(动态规划和贪心),包括了Python 剪绳子的多种思路实现(动态规划和贪心)的使用技巧和注意事项,需要的朋友参考一下 剑指Offer(Python多种思路实现):剪绳子 面试14题: 题目:剪绳子 题:给你一根长度为n的绳子,请把绳子剪成m段(m,n都是整数,且n>1,m>1),每段绳子的长度记为k[0],k[1],k[2],...,k[m]。请问