标签:
递推思想本身并不跟函数有直接关系(虽然常常写在函数中)。
其基本思路为:
为了解决一个“大”问题,根据现实逻辑,如果能够找到同类问题的一个“最小问题”的答案(通常是已知的),并且根据已知算法,又可以因此得到比最小问题“大一级”问题的答案。 而且,依次类推,又可以得到再大一级问题的答案,最终就可以得到“最大那个问题”(即要解决的问题)的答案。
可见,该思想的过程依赖与2个条件:
1,可知同类最小问题的答案;
2,大一级问题的答案可以通过小一级问题的答案经过简单运算规则而得到。
此思想的解体思路是:从小到大
对比:递归思想是:从大到小,在回归到大。
举例:
斐波那契数列,又称为黄金分割数列,
斐波那契数列的前几项为:1,1,2,3,5,8,13,21...(前两项是已知的),这两个数从第三项开始,每一项都等于前两项之和。
例如相关的:有趣的兔子问题,
一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来,如果所有兔子都不死,那么一年之后可以繁殖多少对兔子?
分析如下:
第一个月小兔子没有繁殖能力,所以还是一对;
两个月后,生下一对小兔子,总数共有两对;
三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,总数共有三对
…………
<?php
//利用递推思想(迭代思想)解决斐波那契数列
function fbnq($month){
$month1=1;
$month2=1;
$result=0;
for($i=3;$i<=$month;$i++){
$result=$month1+$month2;
$month1=$month2;
$month2=$result;
}
return $result;
}
echo "兔子的总数量".fbnq(8);
?>
标签:
原文地址:http://blog.csdn.net/hraymon/article/details/42815381