【发布时间】:2011-03-06 06:10:24
【问题描述】:
我目前正在使用 PHP,所以这个示例将使用 PHP,但问题适用于多种语言。
我正在和我的一个恶魔一起做这个项目,而且一如既往地遇到了一个大问题。现在我们都回家了,无法解决问题。那天晚上我们都找到了解决办法,只是我用循环解决问题,他用递归。
现在我想告诉他循环和递归之间的区别,但我想不出一个解决方案,你需要在正常循环上进行递归。
我将制作两者的简化版本,希望有人能解释一下两者有何不同。
请原谅我的任何编码错误
循环:
printnumbers(1,10);
public function printnumbers($start,$stop)
{
for($i=$start;$i<=$stop;$i++)
{
echo $i;
}
}
现在上面的代码只是简单地打印出数字。
现在让我们用递归来做这件事:
printnumbers(1,10);
public function printnumbers($start,$stop)
{
$i = $start;
if($i <= $stop)
{
echo $i;
printnumbers($start+1,$stop);
}
}
上面的这个方法将做与循环完全相同的事情,但只有递归。
谁能向我解释一下使用其中一种方法有什么不同。
【问题讨论】:
-
嗯,你为什么在第二个代码sn-p中倒数?
-
哦,抱歉,这只是一个错字,已修复!
-
我认为这表明了对递归函数保持警惕的一个原因:它们很难正确处理,有时会导致这个站点。