解决百度知道问题回答: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