青蛙跳台阶算法,每次可以跳1级或两级,请问有n级台阶,有多少种算法,递归和非递归如何写
假设,一级台阶,有f(1)种方法,二级有f(2)种,以此类推,n级有f(n)种方法。
可以看出,f(1)=1;f(2)=2。
那么,假设n级台阶,那么第一步就有两种情况,跳一步,跟跳两步。
情况一:跳一步,那么接下去的就是f(n-1);
情况二:跳两步,那么接下去的就是f(n-2)。
所以总数是f(n)=f(n-1)+f(n-2)。
循环
public function index(){$n &#61; 10 ;//台阶数$one &#61; 1 ;$two &#61; 2 ;$sum &#61; 0;//2*f($n-1)for ($i&#61;3; $i <$n; $i&#43;&#43;) { $sum &#61; $two;$two &#61; $one&#43;$two;$one &#61; $sum;}return $one &#43; $two;}
递归
或
递归实现&#xff1a;
public int index(int n){if (n <0)return 0;int[] fibArry &#61; { 0, 1, 2 };if (n <3)return fibArry[n];return index(n - 1) &#43; index(n - 2);}
或
public int JumpFloor(int target) {if(target&#61;&#61;0)return 1;if(target&#61;&#61;1)return 1;else{return JumpFloor(target-1)&#43;JumpFloor(target-2);}
}