青蛙跳台阶问题
问题:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n
级的台阶总共有多少种跳法。
//青蛙跳台阶问题 package day08; public class test01 { public int numWays(int n) { //动态规划 //思路分析:借助辅助变量sum,利用双指针,a、b。a = b向后移动a(a从0移动到n的位置停下,所以最后返回a) // b = sum向后移动b(为了同步) // int a=1,b=1,sum; // for (int i=0;i<n;i++){ // sum=(a+b)% 1000000007; // a=b; // b=sum; // } // return a; //递归 //创建数组res[n + 1],(一定是n + 1,否则当n = 0的时候访问res[0]会出现越界报错 // 让n = 0和n = 1赋值为1存入数组,从第三个元素(下标为2)开始递归,最后返回res[n] int[] res = new int[n+1]; if (n>=0) res[0]=1; if (n>=1) res[1]=1; for (int i=2;i<=n;i++){ res[i] += (res[i - 1] + res[i - 2]) % 1000000007; } return res[n]; } }