php中青蛙跳台阶的问题解决方法

一只青蛙一次可以跳上1级台阶,也可以跳上2级,求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

思路:

1.找规律 f(1)=1 f(2)=2 f(3)=3 f(4)=5 f(n)=f(n-1)+f(n-2)这是一个斐波那契数列

2.因为调到第n个台阶时,倒数第一个台阶可以一步跳过来,倒数第二个台阶也可以一步就跳过来

非递归版本:

  1. JumpFloor(target)
  2. if target==1 || target==2 return target
  3. jumpSum=0
  4. jump1=1
  5. jump2=2
  6. for i=3;i<target;i++
  7. jumpSum=jump1+jump2
  8. jump1=jump2
  9. jump2=jumpSum
  10. return jumpSum
  11. function jumpFloor($number)
  12. {
  13. if($number==1 || $number==2){
  14. return $number;
  15. }
  16. $jumpSum=0;
  17. $jump1=1;
  18. $jump2=2;
  19. for($i=3;$i<=$number;$i++){
  20. $jumpSum=$jump1+$jump2;
  21. $jump1=$jump2;
  22. $jump2=$jumpSum;
  23. }
  24. return $jumpSum;
  25. }
  26. $res=jumpFloor(10);
  27. var_dump($res);