1 <?php 2 #跳台阶问题 3 #规定跳台阶有两种跳法,一次跳1阶或一次跳2阶,问有n个台阶共有几种跳法 4 #如果n=1,则只有一种跳法,n=2有两种跳法-一次跳1阶,一次跳2阶 5 #如果n > 2时,可以分为两种情况,第一种是第一次跳1阶,那么剩下的跳法就是f(n - 1)种了 6 #第二种是第一次跳2阶,那么剩下的跳法就是f(n - 2)种,则f(n) = f(n - 1) + f(n - 2) 7 #于是有递推公式 8 # | 1 n = 1 9 # f(n) = < 2 n = 2 10 # | f(n - 1) + f(n - 2) n > 2 11 #那么这个问题的解法就类似于Fabonacci了 12 13 function jump($n) { 14 if ($n == 1) return 1; 15 if ($n == 2) return 2; 16 $a = 1; 17 $b = 2; 18 $i = 3; 19 while ($i <= $n) { 20 $c = $a + $b; 21 $a = $b; 22 $b = $c; 23 $i++; 24 } 25 return $c; 26 } 27 28 echo jump(6); 29 ?>