递推典型算法:猴子爬山,跳台阶,爬楼梯(牛客网)、魔法深渊(快手)----Python、Java

本文介绍了递推算法的概念,通过猴子爬山问题和快手校招题——魔法深渊为例,阐述了如何利用递推关系解决问题。猴子爬山问题中,猴子上山的30级台阶有多种不同的爬法,通过递推公式f(k) = f(k-1)+f(k-3) (k>3)来解决。魔法深渊问题要求月神以2的整数次幂阶数爬出深渊,同样可以建立递推关系进行求解,并给出了Java实现代码。
摘要由CSDN通过智能技术生成

递推算法的基本思想是把一个复杂的、庞大的计算过程转化为简单过程的多次重复,其首要问题是得到相邻的数据项之间的关系,即递推关系。以猴子爬山为例。

1.问题的提出

一个顽猴在一座有30级太假的小山上爬山活跃,猴子上一步可跳1级或者3级,试求上山的30级台阶有多少种不同的爬法

2.简单递推设计

这一问题实际上是一个整数有序可重复拆分的问题。试应用数组递推求解,设爬k级台阶的不同爬法为f(k)种。

  • 探求f(k)的递推关系

    上山最后一步到达第30级台阶,完成上山,共有f(30)种不同的爬法,到第30级之前位于哪一级呢?无非就是位于第29级(上跳1级即可到),有f(29)种;或者位于第27级(上跳3级即可到),有f(27)种;于是f(30)=f(29)+f(27)

     依次类推,有以下递推关系:

           f(k) = f(k-1)+f(k-3)            (k>3)

  • 确定初始条件

    f(1) = 1

    f(2) = 1

    f(3) = 2

3.递推描述

n = int(input())      #总共需要到达的台阶数
result = []
if(n==1):
    print(1)
elif(n==2):
    print(1)
elif(n=3):
    print(2)
else:
    result.append(0)
    result.append(1)
    result.append(1)
    result.a
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值