递归与迭代的区别与联系
1、递归:自身调用自身,每一次调用把问题简化,直到问题解决。
可以把大的任务拆成相同性质的多个小任务。
以昨天的猴子摘桃为例
变成5只猴子来,每只猴子只接1颗桃
即:人多,每人完成一件即可,这就是递归.
2、迭代:就是指在某个范围内,反复执行相同工作。
如果是一只猴子,变不出第二只猴子来,只能自己摘
应该:走走走,走到最右边,从右到左,一个个摘回来
这次:1只猴子把要作的工作列出,每次做一步
1只猴子做多步工作.这就是迭代.
总结
递归: 5只猴子,每只猴子,摘1颗桃,完成1步工作
迭代:1只猴子,这只猴子,摘5颗桃,完成5步工作
/*
这是一个典型的递归调用,
在计算出结果前,最多的时候,共有10个函数同时运行.
*/
function recsum($n) {
if($n > 1) {
return $n + recsum($n-1);
} else {
return 1;
}
}
echo recsum(10),'<br >'; //55
/*
迭代:就是指在某个范围内,反复执行相同工作.
*/
function itsum($n) {
for($sum=0,$i=1;$i<$n;$i++) {
$sum += $i;
}
return $sum;
}
echo itsum(10); //45