递归的入门

问题:有 5 个人坐在一起,问第 5 个人多少岁,他说比第 4 个人大 2 岁。问第 4 个人多少岁,他说比第 3 个人大2岁。问第 3 人多少岁,他说比第 2个 人大 2 岁。问第2个人多少岁,他说比第 1 个人大 2 岁。最后问第 1 个人,他说他是 10 岁。编写程序,当输入第几个人时求出其对应的年龄。

  • test(n) 输入的第几个人
  • test( n -1 ) 前面一个人
  • +2岁 每层的计算关系
  • n == 1 终止的条件 第一个人
  • test(n) = test(n-1) + 2 当前的人=前面一个人+2岁
def test(n):
    if n == 1: # 结束的条件 第一个人
        return 10
    else:
        return test( n-1 ) + 2

print(test(4))

斐波那契数列。0、 1、1、2、3、5、8、13、21、34…,除了第一个,第二个,其余的数据等于前两个数据之和,5=3+2,34=21+13

  • f(n) 第几个数字
  • f(n-1) f(n-2) 前面1个 2个数字
  • 第一第二个数字,无法通过前面2个数字相加,所以是终止点
  • f(n-1) + f(n-2) 每曾的关系 前2个相加
  • f(n) = f(n-1) + f(n-2)
def f(n):
    if n == 1:
        return 0
    elif n == 2:
        return 1
    else:
        return f(n-1) + f(n-2)

print(f(7))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值