我想创建一个函数,在其中我放置两个值(值及其功效 - 示例函数:multiply(3, 3)
结果27
)。到目前为止我已经尝试但失败了,我已经使用谷歌进行了搜索,但我找不到任何结果,因为我不知道这个函数的名称。
我想要的是什么:
3,3 => 3 x 3 x 3 = 27
4,4 => 4 x 4 x 4 x 4 = 256
我尝试了什么:
function multiply($value,$power){
for($x = 1; $x <= $value; $x++ ){
return $c = $value * $power;
}
}
echo multiply(3,3);
答案 0 :(得分:9)
答案已被接受,但我不得不来这里说这里的所有答案都使用了一个糟糕的算法。有更好的。包括非常简单的,如exponentiation by squaring,可以降低从O(功率)到O(log(功率))的复杂性。
这个想法是在将指数除以2的同时对基数求平方。例如
3^8 = 9^4 = 81^2 = 6561
指数为奇数时有一种特殊情况。在这种情况下,您必须存储一个单独的变量来表示此因子:
2^10 = 4^5 = 16^2 * 4 = 256 * 4 = 1024
PHP并不是我强大的技能之一,但最终的算法很简单:
function multiply($value, $power){
$free = 1;
while ($power > 1) {
if ($power % 2 == 1)
$free *= $value;
$value *= $value;
$power >>= 1; //integer divison by 2
}
return $value*$free;
}
echo multiply(3, 3) . "\n";
echo multiply(2, 10) . "\n";
echo multiply(3, 8) . "\n";
答案 1 :(得分:4)
echo pow(3, 3);
修改强>
让我们创造自己的功能。
function raiseToPower($base,$exponent)
{
// multiply the base to itself exponent number of times
$result=1;
for($i=1;$i<=$exponent;$i++)
{
$result = $result * $base;
}
return $result;
}
答案 2 :(得分:3)
function exponent($value,$power)
{
$c=1;
for($x = 1; $x <= $power; $x++ )
{
$c = $value * $c;
}
return $c;
}
答案 3 :(得分:2)
$ a ** $ b Exponentiation将$ a筹集到$ b&#39; th的结果。
echo 2 ** 3;
数字pow(数字$ base,数字$ exp)
echo pow(2, 3);
function multiply($value, $power) {
$result = 1;
for($x = 1; $x <= $power; $x++){
$result *= $value;
}
return $result;
}
echo multiply(3,3);
阅读更多内容:
答案 4 :(得分:1)
尝试运行此代码我希望您的问题能够得到解决。 如果您定义任何函数,则必须将其称为返回值。
<?php
function multiply($value,$exp)
{ $temp=1;
if($exp==0)
return $temp;
else
{
for($i=1;$i<=$exp;$i++)
$temp=$temp*$value;
return $temp;
}
}
echo multiply(5,6);
?>