斐波那契数列python

本文介绍了斐波那契数列的基本概念,通过兔子问题进行生动阐述。详细探讨了不同方法的代码实现,包括基本实现、递归方式以及使用lambda表达式和递归的组合。同时,将斐波那契数列的应用拓展到解决楼梯问题,提出了解决问题的思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本概念

斐波那契数列,称黄金分割数列(当数越来越大时,前一项与后一项的比列越来越接近黄金比),又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……

兔子问题

问题描述:如果每对兔子每个月能生一对兔子,而出生的兔子在第二个月有生殖能力,试问一对兔子一年能繁殖多少对兔子?
推导过程
第一月:1对兔子
第二月:1对兔子
第三月:1对兔子,1对兔子(这个月生)
第四月:1对兔子,1对兔子(这个月生),1对兔子(上个月生)
第五月:2对兔子,2对兔子(这个月生),1对兔子(上个月生)
第六月:3对兔子,3对兔子(这个月生),2对兔子(上个月生)
第七月:5对兔子,5对兔子(这个月生),3对兔子(上个月生)
第八月:8对兔子,8对兔子(这个月生),5对兔子(上个月生)
第九月:13对兔子,13对兔子(这个月生),8对兔子(上个月生)
第10月:21对兔子,21对兔子(这个月生),13对兔子(上个月生)
第11月:34对兔子,34对兔子(这个月生),21对兔子(上个月生)
第12月:55对兔子,55对兔子(这个月生),34对兔子(上个月生)

基本代码实现

n1 = 1  #存放上月兔子数
n2 = 1  #存放本月兔子数

num = input("输入需要的斐波那契数列的个数:")
#判断是否时非零的自然数
if num.isdigit():
    #转为int型
    num = int(num)
    if num == 0:
        print("输入非法")
    else:
        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
        pass
else:
    print("输入内容非法")

递归代码实现

#n为第几个斐波那契数
def cc(n):
    if n == 1 or n == 2:
        return 1
    else:
        return cc(n-2)+cc(n-1)

print(cc(4))

使用lambda表达式 + 递归实现斐波那契数列

a=lambda n:1 if n==1 or n==2 else a(n-2)+a(n-1)

方法的应用

描述:有一楼梯共n级,刚开始时你在最底部,若每次只能跨上一级或二级或三级,要恰好走上第n级,共有多少种走法?

def climb(step):
    #函数结束的条件
        if step==1:
            return 1
        elif step==2:
            return 2
        elif step == 3:
            return 4
        else:
            return climb(step-1)+climb(step-2)+climb(step-3)

思路

当你在最后一阶台阶n时,你的上一阶可能在n-1阶,n-2阶,n-3阶。那么最后一阶的可能性为f(n)=f(n-1)+f(n-2)+f(n-3).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值