gpt4 book ai didi

php - n 大数的阶乘问题

转载 作者:搜寻专家 更新时间:2023-10-31 21:28:23 25 4
gpt4 key购买 nike

我编写了以下代码来查找 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 安装有两个问题。

  1. 我在一台 PC 上,

Fatal error: Maximum function nesting level of '100' reached, aborting!

为了纠正上述问题,我找到了解决方案 here .这是获得解决方案的正确方法吗?因为它取决于“xdebug.max_nesting_level”的特定默认值。

  1. 在我得到的其他 PC 上,

INF

那么解决这个问题的最佳方法是什么?

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

更新:有一个 function建议。但是可以不使用任何一种功能来完成吗?

最佳答案

嵌套限制:

如果 calcFactorial() 可以通过非递归那么你可以把它改成这样:

function calcFactorial($number){

if($number<2){
return 1;
}

$ret = 1;
for($i=2;$i<=$number;$i++){
$ret = $ret*$i;
}
return $ret;
}

如果必须递归,您永远无法计算大于最大函数嵌套级别的数字的阶乘。

信息:

这意味着 PHP 认为数字是不定式的(大到可以存储在内存中)...我认为(不确定)答案大于 PHP_INT_MAX ...

您可以通过 echo is_infinite($number); 确认这一点

你可以尝试通过将数字存储为字符串(数字)或数组(数字)来解决这个问题,而不是编写一些函数来对这个字符串(数组)进行乘法运算,但这并不容易做到

关于php - n 大数的阶乘问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32984683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com