例如pow(3,3)
返回27
我尝试while
并尝试了for
循环。我错过了一些明显的东西。只是不确定它是什么。有人可以带我走过这个吗?
$i = 1;
while ($i <= $exponent) {
$result = ($base * $base);
$result = $result * $result;
$i++;
echo $result;
}
答案 0 :(得分:2)
我真的不知道如何描述错误,这里 - 你的代码对计算指数没有意义。从1开始,乘以基数$exponent
次。
$result = 1;
for ($i = 0; $i < $exponent; $i++) {
$result *= $base;
}
echo $result;
答案 1 :(得分:2)
这是非常有效的pow函数的递归伪代码: -
pow(a,b) {
if(b==0) return 1
temp = pow(a,b/2)
if(b%2==0)
return(temp*temp)
else return(a*temp*temp)
}
上述代码比循环和代码更直观。时间复杂度为O(logb)
我不熟悉php语法。
答案 2 :(得分:0)
您希望将数字乘以基数exponent
次 - 所以像这样:
function myPow($base, $exponent) {
$result = 1;
for($ii = 0; $ii < $exponent; $ii++) {
$result *= $base;
}
return $result;
}
已编辑 - 刚刚注意到了php标签......
答案 3 :(得分:0)
您可以使用身份。
xy=ey×ln(x)
不确定如何翻译成php。
答案 4 :(得分:0)
$x = 3; // 3*3*3*3*3 => 5 time
$n = 5;
$res = 1;
for ($i = 0; $i < $n; $i++)//i need 5time repeat
{
$res *= $x;
//in here important
// first time $res = 1 and $x = 3 ---> $res * $x --> 1*3 = 3
//secend time $res = 3 and $x = 3 ---> $res * $x --> 3*3 = 9
//next $res = 9 and $x = 3 ---> $res * $x --> 9*3 = 27
//next $res = 27 and $x = 3 ---> $res * $x -> 27*3 = 81
//final time $res = 81 and $x = 3 ---> $res * $x -> 81*3 = 243
}
echo $res;
///// Output : 243
答案 5 :(得分:0)
此功能还应该知道可能的负指数
function pow($num, $x)
{
if ($x == 0) return 1;
else if ($x > 0) return $num * pow($num, --$x);
else return 1 / $num * pow($num, ++$x);
}
pow(2,3) 8
pow(2,-3) 0.125
答案 6 :(得分:0)
function power($a,$b)
{
if ($b==0) return 1;
if ($b==1) return $a;
if ($b%2==0) return power ($a*$a,$b/2);
return $a*power($a*$a,($b-1)/2);
}
$total= power(2,16);'
可能是代码需要的人......