例如,pow(3,3)返回27我尝试了while和for循环。我错过了一些明显的东西。只是不确定它是什么。有人能告诉我这个吗?
pow(3,3)
while
for
$i = 1; while ($i <= $exponent) { $result = ($base * $base); $result = $result * $result; $i++; echo $result; }
vxqlmq5t1#
我真的不知道如何描述这里的错误, -你的代码对于计算指数没有意义。从1开始,乘以基数$exponent次。
$exponent
$result = 1; for ($i = 0; $i < $exponent; $i++) { $result *= $base; } echo $result;
92dk7w1h2#
下面是非常有效的幂函数的递归伪代码:-
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) }
上面的代码比for循环更直观&时间复杂度为O(logb)我不熟悉php语法。
rslzwgfq3#
你想把一个数乘以基数exponent--这样就可以了:
exponent
function myPow($base, $exponent) { $result = 1; for($ii = 0; $ii < $exponent; $ii++) { $result *= $base; } return $result; }
已编辑-刚刚注意到php标记...
nue99wik4#
有一个身份你可以使用。
xy=ey×ln(x)
不知道如何翻译成php。
ruarlubt5#
$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
i86rm4rw6#
此函数还应注意可能的负指数
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); }
幂(2,3)等于8乘方(2,-3)等于0.125
nwsw7zdq7#
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);'
可能是个不守规矩的人
brgchamk8#
不使用pow()函数和乘法(*)因子的指数。如果幂为浮点数,则不适用。
echo userPower(5, -2); //0.04 echo userPower(5, 2); //125 function userPower(int $base, int $power) { $pow = $power < 0 ? abs($power) : $power; $x = $y = $base; for ($i = 1; $i < $pow; $i++) { for ($j = 1; $j < $base; $j++) { $x += $y; } $y = $x; } return $power < 0 ? 1 / $y : $y; }
8条答案
按热度按时间vxqlmq5t1#
我真的不知道如何描述这里的错误, -你的代码对于计算指数没有意义。从1开始,乘以基数
$exponent
次。92dk7w1h2#
下面是非常有效的幂函数的递归伪代码:-
上面的代码比for循环更直观&时间复杂度为O(logb)
我不熟悉php语法。
rslzwgfq3#
你想把一个数乘以基数
exponent
--这样就可以了:已编辑-刚刚注意到php标记...
nue99wik4#
有一个身份你可以使用。
不知道如何翻译成php。
ruarlubt5#
i86rm4rw6#
此函数还应注意可能的负指数
幂(2,3)等于8
乘方(2,-3)等于0.125
nwsw7zdq7#
可能是个不守规矩的人
brgchamk8#
不使用pow()函数和乘法(*)因子的指数。如果幂为浮点数,则不适用。