Php 大数n阶乘问题

Php 大数n阶乘问题,php,recursion,factorial,Php,Recursion,Factorial,我已经为查找n!编写了以下代码!。我正在通过CLI运行此操作 <?php $handle = fopen("php://stdin", "r"); $number = (int) trim(fgets($handle)); $fact = calcFactorial($number); echo $fact . "\n"; function calcFactorial($number) { if ($number < 2) {

我已经为查找n!编写了以下代码!。我正在通过CLI运行此操作

<?php 
    $handle = fopen("php://stdin", "r");
    $number = (int) trim(fgets($handle));
    $fact = calcFactorial($number);
    echo $fact . "\n";

function calcFactorial($number) {
    if ($number < 2) {
        return 1;
    } else {
        return $number * calcFactorial($number - 1);
    }
}
fclose($handle);
?>

上面的代码运行良好。但是两个不同的PHP安装有两个问题

  • 在我的一台电脑上,
  • 致命错误:已达到最大函数嵌套级别“100”, 流产

    为了纠正上述问题,我找到了解决办法。这是解决问题的正确方法吗?因为它取决于特定的默认值“xdebug.max\u nesting\u level”

  • 在我得到的其他PC上,
  • INF

    那么,解决这一问题的最佳方法是什么

    p.S.:我已经在整个网站上讨论了各种解决方案,但我无法得出结论

    更新:有一个建议。但是不使用任何类型的函数就可以实现吗

    嵌套限制:

    如果calcFactorial()可以通过非递归方式执行,则可以将其更改为:

    function calcFactorial($number){
    
        if($number<2){
            return 1;
        }
    
        $ret = 1;
        for($i=2;$i<=$number;$i++){
            $ret = $ret*$i;
        }
        return $ret;
    }
    
    函数CalcFactory($number){
    
    如果($number@PaulCrovella,谢谢,但我希望它不带任何函数。必须递归吗?
    calcFactorial()
    最大函数嵌套级别
    是否使用xDebug?是的
    calcFactorial
    是递归的。是的,它在一台PC上