php - PHP 中的递归与迭代

标签 php loops

迭代阶乘函数:

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/

相关文章:

c - 从另一个 c 文件迭代 c 数组,隐藏结构变量

php - 如何替换字符串中的一两个连续换行符?

php - 检查数组以查找公共(public)数据

php - 为什么 PDO 中的 INSERT INTO 过于复杂?

java - 通过for循环在字符串中插入字符

javascript - 将对象的子数组插入父数组

php - 如何为php项目设置端口?

php - 如何限制一台机器上的PHP Web应用程序访问?

javascript - Canvas 仅在循环结束后重绘

python - 对于列表 : del n 中的 n