用Python编写计算机领域的程序,找出加起来等于n所需的最小斐波那契数的数量?

用Python编写计算机领域的程序,找出加起来等于n所需的最小斐波那契数的数量?

假设我们有一个数字n;我们要找到加起来等于n所需的最小斐波那契数的数量。

因此,如果输入为n = 20,则输出将为3,因为我们可以使用斐波那契数[2,5,13]相加得到20。

为了解决这个问题,我们将按照以下步骤进行:

  • res:= 0

  • fibo:=一个具有值[1,1]的列表

  • while fibo的最后一个元素<= n,do

    • x:= fibo的最后两个元素的和

    • 将x插入fibo

    • while n不为零,do

      • while fibo的最后一个元素> n,do

      • 从fibo中删除最后一个元素

      • n:= n – fibo的最后一个元素

      • res:= res + 1

  • 返回res

让我们看一下以下实现,以更好地了解:

更多Python相关文章,请阅读:Python 教程

例子

class Solution:
def solve(self,n):
   res = 0
   fibo = [1,1]
   while fibo[-1] <= n:
     fibo.append(fibo [-1] + fibo [-2])

   while n:
     while fibo[-1]> n:
         fibo.pop()
     n- = fibo [-1]
     res + = 1
   return res

ob = Solution()
n = 20
print(ob.solve(n))

输入

20

输出

3

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程