题目:
Fibonacci数列是这样定义的:
F[0] = 0
F[1] = 1
for each i ≥ 2: F[i] = F[i-1] + F[i-2]
因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci数列中的数我们称为Fibonacci数。
递归法:
def fib_recur(n): assert n >= 0, "n > 0" if n <= 1: return n return fib_recur(n-1) + fib_recur(n-2) needline=[] for i in range(0, 20): print(fib_recur(i), end=' ') need=fib_recur(i).split needline+=need print(needline)
现在题目是这样的,就换了一个实现方式:
给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。
N = int(input()) #输入值 F0 = 0 F1 = 1 while N > F1: #从2开始,生成Fibonacci数列,当F1大于N时,数列停止生成 temp = F0 F0 = F1 F1 = F1 + temp #print(F1) step = min(abs(N-F1),abs(N-F0)) print(step)
本文来自博客园,作者:哈利波特甜,转载请注明原文链接:https://www.cnblogs.com/zmh-980509/p/12503750.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步