python斐波那契数列相关问题

img


刚刚开始学,不太懂怎么写,求懂得人麻烦指教
斐波那契数列相关的问题

可以先定义一个函数求某一项的斐波那契数列的值,然后在一个循环中调用这个函数,判断其值是否超过5000,如果没有超过则计算下一项斐波那契数列的值,同时记录项数,如果查过了,则打印第几项超过了5000,代码如下:

参考链接:
java斐波那契前100项以及求和_pyh2358的博客-CSDN博客_斐波那契数列前100项

def fib(n):
    if n==1 or n==2: #如果项数为第1项或第2项,则返回斐波那契数列的值为1
        return 1
    else: #否则,返回前两项的斐波那契数列的和
        return fib(n-1)+fib(n-2)

if __name__ == "__main__":

    i=1  #初始项数为第1项
    result=fib(i) #计算第1项斐波那契数列的值
    while result<=5000:  #如果斐波那契数列的某一项的值小于等于5000,则计算下一项斐波那契数列的值
        i+=1  # 项数变为下一项
        result=fib(i)  #计算下一项斐波那契数列的值

 #当循环退出,则计算出数列值超过5000的项数,打印这个结果       
print("第"+str(i)+"项的斐波那契数列其值超过5000,其值是"+str(result)+".")
        


img

斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。

def fib(n):
    if (n == 1) or (n == 2):
        return 1
    return fib(n - 1) + fib(n - 2)
print(fib(15))