青蛙跳台阶,每次跳一步或两步,问跳n阶有多少种跳法?
递归法,效率低,难思考,但是普适。
分析:像二叉树一样,不断向下分析,分拆,最后回溯。
class Solution { public: int jumpFloor(int number) { if(number<=0) { return 0; } if(number==1) { return 1; } if(number==2) { return 2; } else { return jumpFloor(number-1)+jumpFloor(number-2); } } }; |
添加笔记
规律法:看似复杂的题,找找规律其实很简单,不就是斐波那契额数的应用吗!
f(n)=f(n-2)+f(n-1);
两步 一步
class
Solution {
public
:
int
jumpFloor(
int
number) {
int
cnt=
0
;
int
n1=
1
;
int
n2=
2
;
if
(number==
0
)
{
return
0
;
}
if
(number==
1
)
{
return
1
;
}
if
(number==
2
)
{
return
2
;
}
else
{
for
(
int
i=
3
;i<=number;i++)
{
cnt=n1+n2;
n1=n2;
n2=cnt;
}
return
cnt;
}
}
};