迭代、递归解决斐波纳挈数列问题

来源:互联网 发布:打拐dna数据库 编辑:程序博客网 时间:2024/06/10 22:47
<?php/** * @param $n int 第N项 * * @return int 第N项的值 */function f($n) {//已知条件$before_1 = 1;//前一项(初始化时就是第二项)$before_2 = 1;//前二项(初始化时就是第一项)//判断是否是第一项或第二项if($n == 1) {return $before_2;} elseif ($n == 2) {return $before_1;}//计算第$n项,从第三项开始,到第$n项,逐一计算for($i=3; $i<=$n; ++$i) {$now = $before_1 + $before_2;//得到当前项$now//切换前一项,和前二项,整体向后移动$before_2 = $before_1;$before_1 = $now;}return $now;}echo f($_GET['n']);//echo f(2);//echo '<br>';//echo f(5);//echo '<br>';//echo f(10);
<?php//递归的方案解决斐波纳挈数列/** * @param $n int 第N项 * * @return int 第N项的值 */function f($n) {//递归出口,前两项已知if($n == 1) {return 1;} elseif ($n == 2) {return 1;}//利用公式完成//递归点,每项前两项之和return f($n-1) + f($n-2);}echo f($_GET['n']);//echo f(5);//5//f(5) = return f(4) + f(3);// = return (return f(3) + f(2)) + f(3);// = return (return (return f(2) + f(1)) + f(2)) + f(3);// = return (return (return 1 + f(1)) + f(2)) + f(3);// = return (return (return 1 + 1) + f(2)) + f(3);// = return (return 2 + 1) + f(3);// = return 3 + (return f(2) + f(1));// = return 3 + (return 1 + f(1));// = return 3 + (return 1 + 1);// = return 3 + 2;// = return 5;////echo '<br>';//echo f(10);//55


0 0
原创粉丝点击