【发布时间】:2014-01-20 01:13:40
【问题描述】:
我觉得无聊,创建这个脚本的唯一目的就是练习循环。我正在尝试使用阶乘数字,例如479001600,它是 12 的阶乘!我将它输入到循环中以查找 479001600 的阶乘是什么数字。使用技术479001600/2 -> 239500800/3 -> 79833600/4 ...-> previous_int/n+1 我想出了下面的代码,它只能工作到 12 点!但在 13 日失败!向前:
<?php
function inv($int){
$j=2;
for($i=0;$i<$j;$i++){
$prod = $int/$j;
if($prod !== 1){
$int = $prod;
echo $prod. "<br>";
$j++;
} elseif($prod == 1) {
return $j;
}
}
}
echo inv(6227020800); // 13!
?>
当我尝试将 6227020800 计算为 13 时!我得到以下输出:
3113510400 1037836800 259459200 51891840 8648640 1235520 154440 17160 1716 156 13 1 0.071428571428571 0.0047619047619048 0.00029761904761905 1.750700280112E-5 9.7261126672891E-7 5.1190066669943E-8 2.5595033334971E-9 1.2188111111891E-10 ...ETC即使它通过循环除法得到整数 1,它仍然忽略 if 语句。有什么我做错了吗?任何帮助将不胜感激,此外,我想避免使用 gmp_ 函数。
【问题讨论】:
-
我刚刚试了一下,效果很好。
-
将
$prod !== 1(不相同)替换为$prod != 1(不相等)。 -
“它可以在我的机器上运行”:)
-
@SharanyaDutta 谢谢。这似乎有效,为什么失败比较成功?
标签: php loops for-loop factorial inverse