递归-------python代码

递归三要素:

1. 递归终止条件

2. 终止时处理方法

3. 提出重复问题

例如:

1. 用递归计算出:1*2*3*4*5*6*7*8*......*n

def ride_recursion(n):
    if n == 1:
        return 1
    return n * ride_recursion(n - 1)
print(ride_recursion(4))  ####24

2.有一对兔子,每个三天生一对兔子,打印出n天内的兔子数(不考虑兔子死亡)

第一天   1对    1

第二天   1对    1

第三天   2对    1 + 1

第四天   3对    1 + 2

第五天   5对    2 + 3

第六天   8对    3 + 5

第七天   13对  5 + 8

def rabbit_count(taday):
    if taday <= 2:
        return 1
    return rabbit_count(taday - 1) + rabbit_count(taday - 2)

for i in range(1,10):
    print(rabbit_count(i))

3. 将列表中嵌套的列表提取出来

例如:[1,2,[3,4]]  变为[1,2,3,4]

def listsToOne(lists):
    result = list()
    for i in lists:
        if type(i) == list:
            for j in listsToOne(i):
                result.append(j)
        else:
            result.append(i)
    return result
data_list = [1,2,[3,4,[5,6,[7,8],9],10],11]
print(listsToOne(data_list))#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

4.桃子的计算,猴子每天吃当前桃子数量一半多一个,最后一天剩一个:

最后一天 1个

倒数两天 4个 (1 + 1) * 2

倒数三天 10个 (4 + 1) * 2

def peach_count(taday, number):
    if taday == 1:
        return number
    number = (number + 1) * 2
    return peach_count(taday - 1, number)
print(peach_count(10, 1))  #1534

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值