题目:
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)