问:有n层楼梯,青蛙可以跳1层, 2层...n层,那么到达第n层,总共有多少种跳法?
数学归纳法:
/**
* n=1 1 --1种
* n=2 11 2 --2种
* n=3 111 12 21 3 --4种
* n=4 1111 112 121 211 22 13 31 4 --8种
* n=5 11111 1112 1121 1211 2111 122 221 212 113 131 311 32 23 14 41 5 --16种
* 归纳:
* f(n) = 2^(n-1)
*/
化简一下:f(n)=2^(n-1)
solution:
public static double climbStar(int n) {
return Math.pow(2, n - 1);
}
问:有n层楼梯,青蛙一次只能跳1层或者跳2层,那么到达第n层,总共有多少种跳法?leetcode
数学归纳法:
/**
* n=1 1 --1种
* n=2 11 2 --2种
* n=3 111 12 21 --3种
* n=4 1111 112 121 211 22 --5种
* n=5 11111 1112 1121 1211 2111 122 221 212 --8种
* 归纳:
* f(n) = f(n-1) + f(n-2)
*/
这里可以看出是斐波那契数列
斐波那契数列的迭代写法:
private static int fibIterator(int n) {
int fibm = 0;
int fibn = 1;
int j = 0;
while (++j < n) {
fibn += fibm;
fibm = fibn - fibm;
}
return fibn;
}