一次跳一阶或者跳两阶
- 使用递归求解
- 使用动态规划,可当做斐波那契数列
第一次跳1阶,则有 F ( n − 1 ) F(n-1) F(n−1)次跳法;
第一次跳2阶,则有 F ( n − 2 ) F(n-2) F(n−2)次跳法;
因此总共的跳法为:
F ( n ) = F ( n − 1 ) + F ( n − 2 ) F(n) = F(n-1)+F(n-2) F(n)=F(n−1)+F(n−2)
与斐波那契数列的不同之处
青蛙跳台阶问题:
f
(
0
)
=
1
f(0)=1
f(0)=1,
f
(
1
)
=
1
f(1)=1
f(1)=1,
f
(
2
)
=
2
f(2)=2
f(2)=2
斐波那契数列问题:
f
(
0
)
=
0
f(0)=0
f(0)=0,
f
(
1
)
=
1
f(1)=1
f(1)=1,
f
(
2
)
=
1
f(2)=1
f(2)=1
跳一阶,二阶,n阶台阶
1.动态规划考虑:
第一次跳1阶,则有
F
(
n
−
1
)
F(n-1)
F(n−1)次跳法;
第一次跳2阶,则有
F
(
n
−
2
)
F(n-2)
F(n−2)次跳法;
.
.
.
...
...
第一次跳n阶,则有
F
(
0
)
F(0)
F(0)次跳法;
因此总共的跳法为:
F
(
n
)
=
F
(
n
−
1
)
+
F
(
n
−
2
)
+
⋯
+
F
(
0
)
F(n) = F(n-1)+F(n-2)+\cdots+F(0)
F(n)=F(n−1)+F(n−2)+⋯+F(0)
则:
F
(
n
−
1
)
=
F
(
n
−
2
)
+
F
(
n
−
3
)
+
⋯
+
F
(
−
1
)
F(n-1) = F(n-2)+F(n-3)+\cdots+F(-1)
F(n−1)=F(n−2)+F(n−3)+⋯+F(−1)
使用
F
(
n
)
F(n)
F(n)-
F
(
n
−
1
)
F(n-1)
F(n−1)得到:
F
(
n
)
=
2
F
(
n
−
1
)
F(n) = 2F(n-1)
F(n)=2F(n−1)
F ( n − 1 ) F(n-1) F(n−1)可以表示为 2 n − 1 2^{n-1} 2n−1,意思为任何一阶台阶,可以跳也可以不跳,那么 n − 1 n-1 n−1阶台阶表示为 2 n − 1 2^{n-1} 2n−1。