Leetcode-跳台阶问题

一次跳一阶或者跳两阶
  1. 使用递归求解
  2. 使用动态规划,可当做斐波那契数列
    第一次跳1阶,则有 F ( n − 1 ) F(n-1) F(n1)次跳法;
    第一次跳2阶,则有 F ( n − 2 ) F(n-2) F(n2)次跳法;
    因此总共的跳法为:
    F ( n ) = F ( n − 1 ) + F ( n − 2 ) F(n) = F(n-1)+F(n-2) F(n)=F(n1)+F(n2)
与斐波那契数列的不同之处

青蛙跳台阶问题: 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(n1)次跳法;
第一次跳2阶,则有 F ( n − 2 ) F(n-2) F(n2)次跳法;
. . . ... ...
第一次跳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(n1)+F(n2)++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(n1)=F(n2)+F(n3)++F(1)

使用 F ( n ) F(n) F(n)- F ( n − 1 ) F(n-1) F(n1)得到:
F ( n ) = 2 F ( n − 1 ) F(n) = 2F(n-1) F(n)=2F(n1)

F ( n − 1 ) F(n-1) F(n1)可以表示为 2 n − 1 2^{n-1} 2n1,意思为任何一阶台阶,可以跳也可以不跳,那么 n − 1 n-1 n1阶台阶表示为 2 n − 1 2^{n-1} 2n1

你可能感兴趣的:(算法与数据结构编程题,人工智能,python)