• 网站导航
  • 文章详情

解决百度知道问题回答:php中用递归函数计算出16的4次方

在百度知道上面看到了这个提问和下面的问答,感觉并不是最好的解决办法,PHP BC库[BC Math]就有次方计算函数bcpow方法,不推荐使用递归用来处理这个问题。



问题:

php中用递归函数计算出16的4次方


原来有回答者的回答:

function func($x, $n)
{
    if ($n <= 0)
        return 1;
    return $x * func($x, $n - 1);
}
echo func(16, 4);


首先,我可以确认 回答者的这个回答 没有问题,确实使用是递归了用来做了这个次方计算。

但是还可以有更好的解决方式,比如说PHP BC数学计算库。


我不建议使用 递归用来计算 次方。


递归用来做数学运算,调用次数多或者如上面的函数指数值变大,损耗那是非常大的,这服务压力损耗一般扛不住。


正确的做法是 使用PHP 内置的 数学计算BC库[默认都有安装的],直接调用 bcpow方法。



解决:

你好  首先 不建议使用 递归用来计算 次方。

正确的做法是 使用PHP 内置的 数学计算BC库[默认都有安装的],直接调用 bcpow方法。


比如 计算出16的4次方

$rsp = bcpow('16','4',0);
//bcpow参数说明
//第一个参数 必填 计算底数
//第二个参数 必填 计算指数
[如果指数不是整数,将被截断。 指数的有效范围取决于平台,但起码支持 -2147483648 到 2147483647 的范围]
//第三个参数 可选 用于设置结果中小数点后的小数位数。
[也可通过使用 bcscale() 来设置全局默认的小数位数,用于所有函数。如果未设置,则默认为 0 不保留小数。]

//打印结果
var_dump($rsp);
//输出结果
//string(5) "65536"

//测试验证 用计算器 校验 结果 相同 65536



留言

  • 暂无留言,快来留言吧

公告

本网站由云天阁技术支持开发,供学习方便工作,如有侵权,不适或建议,请联系发送邮件至 2776870047@qq.com ,谢谢。