用迭代和递归方式分别写一个兔子生育的python程序(斐波那契数列)

问题:

有一对兔子出生,从第三月起,每个月生一对兔子,出生的兔子也是第三月起每个月生一对兔子,请问n年后,共有多少只兔子?

月份12345678910n
数量(对)11235813213455F(n-2)+F(n-1)
思路:前2个月兔子对数都是1对,从第三个月开始兔子的对数是前面2个月兔子对数之和

F(1)=F(2)=1
F(n)=F(n-2)+F(n-1)

利用递归的方法:

def F2(temp):
    if temp<1:
        print("输入有误!")
        return -1
    
    if (temp==1 or temp==2):
        return 1
    else:
        return F2(temp-2)+F2(temp-1)


temp=int(input("请输入一个正整数:"))
result=F2(temp)
print("%d个月后,有%d对小兔子"%(temp,result))

利用迭代的方法:

def F1(n):
    n1=1
    n2=1
    n3=1
    if n<1:
        print("输入有误!")
        return -1
    while (n-2)>0:
        n3=n2+n1
        n2=n3
        n1=n2
        n-=1

    return n3
n=int(input("请输入一个正整数:"))
result=F1(n)
if result!=-1:
    print("%d个月后,总共有%d对小兔子!"%(n,result))
    

差别:迭代算法效率比递归算法效率高,递归思路更加直接体现问题写法。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值