如何使用 PHP 创建自己的 pow 函数?
Posted
技术标签:
【中文标题】如何使用 PHP 创建自己的 pow 函数?【英文标题】:How I can create my own pow function using PHP? 【发布时间】:2015-06-10 12:40:29 【问题描述】:我想创建一个函数,在其中放入两个值(值及其幂 - 示例函数: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);
【问题讨论】:
感谢阿德里安更新 【参考方案1】:答案已经被接受了,但是我不得不来这里说这里的所有答案都使用了错误的算法。还有更好的。包括非常简单的,比如exponentiation by squaring,它将复杂度从 O(power) 降低到 O(log(power))。
这个想法是在将指数除以 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";
【讨论】:
【参考方案2】:哎呀,再明显不过的问题了。使用名为 pow 的内置函数(在许多语言中)
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;
【讨论】:
感谢 Hanky,但我想创建自己的函数。 哎呀,看看编辑。您的函数中的错误是您将底数与指数相乘,而不是与底数本身相乘。【参考方案3】:function exponent($value,$power)
$c=1;
for($x = 1; $x <= $power; $x++ )
$c = $value * $c;
return $c;
【讨论】:
你吓到我了@ayazkhane ...我刚刚检查了这个并且它工作正常 @habibulhaq 请考虑将函数重命名为其他名称。multiply
并不意味着这个函数的作用,正如你已经知道的那样,一些不经意的读者可能会误认为它,并认为哦,这段代码是不正确的。另外,当我们对此类操作有通用约定名称时,为什么要给它们指定不同操作的名称:)【参考方案4】:
如果您有 PHP >= 5.6,则可以使用 ** 运算符
$a ** $b 取幂 将 $a 提高到 $b' 次方的结果。
echo 2 ** 3;
如果你有 PHP ,你可以使用 pow:
number pow (number $base, number $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);
阅读更多:
http://php.net/manual/en/language.operators.arithmetic.php
http://php.net/manual/en/function.pow.php
【讨论】:
【参考方案5】:请尝试运行此代码,希望您的问题能够得到解决。 如果您定义任何函数,则必须将其称为返回值。
<?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);
?>
【讨论】:
【参考方案6】:echo "Enter number (will be mutiplied):".PHP_EOL;
$value = (int) readline("> ");
echo "Enter number for multiplier:".PHP_EOL;
$multiplier = (int) readline("> ");
function power(int $i, int $n):int
$result =1;
for ($int = 1; $int < $n; $int++)
$result *= $i;
return $result;
echo power($value,$multiplier);
【讨论】:
以上是关于如何使用 PHP 创建自己的 pow 函数?的主要内容,如果未能解决你的问题,请参考以下文章