python斐波那契数列算法

斐波那契数列算法

兔子问题

推理过程(公司笔试面试类型题)(斐波那契数列)

第一个月: 1 小兔子 =1
第二个月: 1 小兔子 =1
第三个月: 1 对大兔子 1 对小兔子(本月生) = 1 + 1 = 2
第四个月: 1 对大兔子 1 对小兔子(本月生) 1 对小兔子(上月生)= 1 + 1 + 1 = 3
第五个月: 2 对大兔子 2 对小兔子(本月生) 1 对小兔子(上月生)= 2 + 2 + 1 = 5
第六个月: 3 对大兔子 3 对小兔子(本月生) 2 对小兔子(上月生)= 3 + 3 + 2 = 8
第七个月: 5 对大兔子 5 对小兔子(本月生) 3 对小兔子(上月生)= 5 + 5 + 3 =13
………………以此类推

基本代码如下:(三种写法)
n1=1
n2=1
num = input("请输入计算的斐波那契数列个数:")

if num.isdigit():#isdigit()自动判断小于零
    num=int(num)
    if num == 0:
        print("输入内容非法")
    if num==1:
        print(n2)
    if num==2:
        print(n2,n2)
    if num>=3:
        for i in range(1,num+1):
            if i==1:
                print(1,end=',')
            elif i==2:
                print(1,end=',')
            else:
                # result =n1 +n2    #计算当前月份的兔子数
                # print(result,end=',')
                # #交换数据
                # n1 = n2
                # n2 = result       #两种交换数值写法
                n1, n2 = n2, n1 + n2
                print(n2, end=',')  # 灵活的语法结构

    pass
else:
    print("输入内容非法")
利用递归实现斐波那契额算法代码如下:

def recur_fibo(n):
    """递归函数
    输出斐波那契数列"""
    if n <= 1:
        return n
    else:
        #返回第n个元素的前两个数相加的值
        return (recur_fibo(n - 1) + recur_fibo(n - 2)) 
# 获取用户输入
nterms = int(input("您要输出几项? "))

# 检查输入的数字是否正确
if nterms <= 0:
    print("输入正数")
else:
    print("斐波那契数列:")
    for i in range(nterms):
        print(recur_fibo(i),end=' ')

利用lambda表达式 + 递归实现斐波那契数列写法如下:
while True:
    n=int(input("你要输入几项?:"))
    if n<= 0:
        print("输入正数")
    else:
        fbnq=lambda n: fbnq(n-1)+fbnq(n-2) if n>2 else 1
        print("第",n,"项的斐波那契值为:",fbnq(n))

总结:

斐波那契数列就是从第三个元素开始,第n个元素的值就等于(n-1)+(n-2)
的值。找规律也是写算法代码的必修课。

如有纰漏,请多指教

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值