面试编程题-青蛙跳楼梯问题

在做题时遇到这个问题,查看了一些博客后,写下自己的理解
青蛙跳楼梯问题:
问题一:一只青蛙一次可以跳1级楼梯或者2级楼梯,一共有n级楼梯,问一共有多少种到达目的地的方法
根据问题可知:
n=1,一共有1种方法
n=2,一共有2种方法
n=3,一共有3种方法
n=4,一共有5种方法
n=5,一共有8种方案
。。。
根据数据的规律,我们知道n级方案的结果就是(n-1)级的结果+(n-2)级的结果,即f(n)=f(n-1)+f(n-2)
问题二:一直青蛙一次可以跳1级台阶、2级台阶或者3级台阶,一共有n级台阶,问一共有多少种到达目的地的方法
根据问题可知:
n=1,一共有1种方案
n=2,一共有2种方案
n=3,一共有4种方案
n=4,一共有7种方案
n=5,一共有13种方案
n=6,一共有24种方案
。。。
根据数据的规律,我们知道f(n)=f(n+1)+f(n+2)+f(n+3)

   所以,我们知道了,在此类问题的时候,首先需要列出从1到k对应的返回值,然后得出等式f(n)=f(n-1)+f(n-2)+f(n-3)...+f(n-k)。
   我们在计算每一次n对应的结果时,可以根据已知的n的前k个结果,分别加上1到k,即为我们所求的n对应的结果了
import java.util.Scanner;

public class FrogJumpStairs {


    //本例只适用于问题二的描述
    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);
        while(sc.hasNextLine()){
            int num = sc.nextInt();
            int result = ThreeJump(num);
            System.out.println(result);
        }

    }

    public static int ThreeJump(int num){
        int result = 0;
        if(num == 1){
            return 1;
        }else if(num == 2){
            return 2;
        }else if(num == 3){
            return 4;
        }else{
            result = ThreeJump(num-1)+ThreeJump(num-2)+ThreeJump(num-3);
        }
        return result;
    }
}

参考网址:
http://blog.sina.com.cn/s/blog_6dc9e4cf0100uwv7.html
http://blog.csdn.net/wukaibo1986/article/details/6987424

猜你喜欢

转载自blog.csdn.net/qq_28814687/article/details/77983117