【问题标题】:Fatal error in creating function that calculates recursively the factorial in php?创建在php中递归计算阶乘的函数时出现致命错误?
【发布时间】:2013-11-30 02:19:05
【问题描述】:

这是我的作业中的问题。

使用 PHP,实现一个函数,递归计算给定数低于 100 的阶乘。如果传递的值超过 100,该函数应返回 0

这是我的答案

<?php

function factorial($number)
{ 
    if ($number >= 100) {
        return 0;
    }
    return $number * factorial($number - 1);      
}

print factorial(11); 
?>

但是当我运行代码时出现致命错误:

致命错误:第 20 行 C:\xampp\htdocs\PhpProject1\index.php 中允许的内存大小为 134217728 字节已用尽(尝试分配 65488 字节)

这是第 20 行 return $number * factorial($number - 1);

我认为我遇到的问题是无限循环:(

我无法结束这个循环

【问题讨论】:

  • 每次迭代都会减一,但是什么时候应该停止呢?当$number 为 1 时? 0?目前它永远不会停止,继续朝着负无穷大。

标签: php recursion


【解决方案1】:

试试这个:

function factorial($number)
{ 
   if ($number >= 100) {
       return 0;
   }
   if($number<= 1){
       return 1;
   }


   return $number * factorial($number - 1);      

}

【讨论】:

    【解决方案2】:

    试试这个方法。

    <?
    
    function factorial($number)
    { 
    if ($number >= 100) {
       return 0;
     }
     elseif($number<= 1){
       return 1; 
     }
     else{/* do nothing */  return $number * factorial($number - 1);  }
    
     }
    
    
     print factorial(11); 
    
    
     ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-08
      • 2016-11-14
      • 2015-04-19
      • 2011-04-25
      • 2017-04-19
      • 1970-01-01
      • 2019-08-06
      • 1970-01-01
      相关资源
      最近更新 更多