【发布时间】:2012-10-10 02:08:25
【问题描述】:
迭代阶乘函数:
function factorial($number) {
$result = 1;
while ($number > 0) {
$result *= $number;
$number--;
}
return $result;
}
递归阶乘函数:
function factorial($number) {
if ($number < 2) {
return 1;
} else {
return ($number * factorial($number-1));
}
}
我必须在我的 PHP 程序中开发一个函数来计算阶乘。我发现我可以通过以上两种方式做到这一点。
- 我不知道哪种方法更好用,为什么?
- 行业标准是什么?
- 如何在上述两种方法中选择一种?
- 根据什么条件判断哪个更好?
我知道这是很多问题,但由于我是 PHP 新手,希望有人能帮助我。
鉴于此,实际上我使用的函数不仅仅是阶乘。它也有一些其他的行来完成一些其他的任务。为了简化起见,我们假设这是两个函数。所以任何人都可以理解我的问题,而不是无缘无故地把它复杂化。
我基本上指的是 PHP 中的递归与迭代。
【问题讨论】:
-
如有疑问,请不要在 PHP 中使用递归 :)
-
如果您在stackoverflow.com/questions/6171807/… 看到评论,您应该会有答案。
-
没有“标准”。一些程序可以以递归形式更优雅地编写。有些不能。递归的一个缺点是它为每个函数调用生成一个堆栈帧。得到足够的这些,你就会得到堆栈溢出。
-
行业标准通常会使用内置函数。 gmp_fact(n)
-
@Dasum:这个问题与哪个特定的 PHP 5 版本有关?