一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/TONGZONGE/article/details/89949897

           一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)

台阶数 跳法

0      0

1      1

2      2

3      3

4      5

5      8

......

跳法类似斐波那契数列

法一:

//自顶向下 (递归)  动态规划(备忘录)

public static int f(int n,int[]bak) {

if(n==0) {

return 0;

}

if(n==1) {

return 1;

}

if(bak[n]!=-1) {

return bak[n];  // 计算过直接返回

}

int result = f(n-1, bak) + f(n-2,bak);

// 未计算重新计算

return result;

}

public static void main(String[] args) {

int n = 8;

int[] bak = new int[n+1] ;

for(int i=0;i<=n;i++) {

bak[i] = -1;

}

System.out.println(f(n,bak));

}

}

法二:

//自底向上

public static int f(int n,int[]bak) {

if(n==0) {

return 0;

}

if(n==1) {

return 1;

}

if(bak[n]!=-1) {

return bak[n];  // 计算过直接返回

}

int result = f(n-1, bak) + f(n-2,bak);

// 未计算重新计算

return result;

}

public static void main(String[] args) {

int n = 8;

int[] bak = new int[n+1] ;

for(int i=0;i<=n;i++) {

bak[i] = -1;

}

System.out.println(f(n,bak));

}

}

猜你喜欢

转载自blog.csdn.net/TONGZONGE/article/details/89949897