跳台阶问题

在看这个问题之前,我们先来看看斐波那契数列

斐波那契数列f(0)=0,f(1)=1,f(2)=f(1)+f(0),f(n)=f(n-1)+f(n-2)
求他n项的程序如下

public int Fibonacci(int n) {
        if(n==0){
            return 0;
        }
        if(n==1){
            return 1;
        }
        return recursion(n);
    }
    public int recursion(int n){
        if(n==2 || n==1){
            return 1;
        }
        int a=recursion(n-1);
        int b=recursion(n-2);
        return a+b;
    }

很容易的一个递归实现

接下来我们来看看青蛙跳台阶的问题,一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

这个题的思路是找到第n项个前面项之间的关系,结论是f(n)=f(n-1)+f(n-2),这个式子是怎么来的呢?首先我们看(n-1)阶,他有一种方法到n阶台阶,再来看(n-2)阶,他有两种方法到n阶台阶,因为一步一步跳这种情况已经包含在了(n-1)阶跳一步到n阶,所以也只有一种,因为青蛙只能跳一步或者两步,因此(n-1)阶和(n-2)阶的跳法之和就等于n阶的跳法数。f(1)=1,f(2)=2,f(3)=3,f(n)=f(n-1)+f(n-2)和斐波那契数列类似,下面是程序实现

public int JumpFloor(int target) {
        if(target==0)
            return 0;
        if(target==1)
            return 1;
        if(target==2)
            return 2;
        return recursion(target);
    }

     public int recursion(int n){
        if(n==2)
            return 2;
        if(n==1)
            return 1;
        int a=recursion(n-1);
        int b=recursion(n-2);
        return a+b;
    }

接下来我们看看青蛙能跳1,2,3…….n阶的情况,类似于之前的分析,f(n)=f(n-1)+f(n-2)+f(n-3)+…..+f(1)+1,f(1)=1
看起来这个式子很复杂,其实经过化简f(n)=2^n ,f(0)=0,f(1)=1,下面是程序实现

public int JumpFloorII(int target) {
        if(target==0)
            return 0;
        return 1<<(target-1);
    }

还有一个问题,也是这个类型的问题,我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?解法和第一种跳台阶问题一样,下面是代码

 public int RectCover(int target) {
        if(target==0)
            return 0;
        if(target==1)
            return 1;
        if(target==2)
            return 2;
        return recursion(target);
    }
    public int recursion(int n){
        if(n==2)
            return 2;
        if(n==1)
            return 1;
        int a=recursion(n-1);
        int b=recursion(n-2);
        return a+b;
    }
weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值