python3 Fibonacci数列

题目:

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)

猜你喜欢

转载自www.cnblogs.com/zmh-980509/p/12503750.html
今日推荐