迭代阶乘函数:
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 是一个特例。您将使用迭代解决方案使用更少的内存。此外,PHP 中的函数调用成本很高,因此最好尽可能避免函数调用。
PHP 将在尝试找到 100,000 的阶乘时出现段错误(在我的系统上),但迭代解决方案没有问题。不过,它们都几乎是即时执行的。
当然,一个小得多的数的阶乘是 INF
,但这也可以应用于增长速度慢得多的函数。
如果我们不是在谈论 PHP 或其他脚本语言,那么就没有标准。很高兴知道如何做到这两种方式。我会选择导致最干净代码的任何一个。
关于php - PHP 中的递归与迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12810985/