我是靠谱客的博主 听话豆芽,最近开发中收集的这篇文章主要介绍跳台阶问题【递归+非递归】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

可以跳一阶台阶,也可以跳2阶,求跳n 阶的方法

递归:

public int jumpfloor(int n){

        if (n==0){
            return 0;
        } else if (n==1){
            return 1;
        } else if(n==2){
            return 2;
        }else{
            return jumpfloor(n-2)+jumpfloor(n-1);
        }
    }

n代表还有多少没跳的

f(0)=0;
f(1)=1;
f(2)=f(2-1)+f(2-2);//当还剩下两阶时,紧接着还可以在跳一阶,两阶
f(3)=f(3-1)+f(3-2);

 

2.非递归,迭加

//自底向上的动态规划
public long long solution(int number)
{
    //题目保证 number 最大为100
    static long long Counter[101] = {0};
    Counter[1] = 1;
    Counter[2] = 2;
    static int calculatedIndex = 2;
 
    if(number <= calculatedIndex)
        return Counter[number];
 
    //防止下标越界
    if(number > 100)
        number = 100;
 
    for(int i = calculatedIndex + 1; i <= number; i++)
    {
        Counter[i] = Counter[i - 1] + Counter[i - 2];
    }
    calculatedIndex = number;
    return Counter[number];
}

 

最后

以上就是听话豆芽为你收集整理的跳台阶问题【递归+非递归】的全部内容,希望文章能够帮你解决跳台阶问题【递归+非递归】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部