python斐波那契数列及同步赋值

img


分子分母同时为斐波那契数列时,如何同步赋值?不要使用yield之类函数能否做到呢?


def fib(n):
    a, b = 1, 1
    for i in range(n-1):
        a, b = b, a+b
    return a

def get_res(x):
    sum_a = 0
    for item in range(3, x+3):
        a = fib(item) / fib(item-1)
        sum_a += a
    return sum_a

res = get_res(5)
print(res)

用一个变量保存上一个运算结果,然后再去算下一个斐波那契数


def num(n):
    n1=1
    n2=2
    s=0
    while n>0:
        n-=1
        s+=n2/n1
        n1,n2=n2,n1+n2
    return s

n=eval(input())
if n<=0:
    print('n输入错误')
else:
    print('前{}项的累加和为{:.2f}'.format(n,num(n)))

def fibonacci(n):
    if n <= 2:
        return n
    else:
        return (fibonacci(n - 1) + fibonacci(n - 2))


def sumfib(n):
    if n == 1:
        return 2 / 1
    else:
        return (fibonacci(n+1) / fibonacci(n)) + sumfib(n-1)


sumfib(3)