用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