如何使用 PHP 创建自己的 pow 函数?
How I can create my own pow function using PHP?
我想创建一个函数,在其中放入两个值(值及其幂 - 示例函数:multiply(3, 3)
结果 27
)。到目前为止,我已经尝试过但失败了,我使用 Google 进行了搜索,但我一直无法找到任何结果,因为我不知道该函数的名称。
我想要的正是:
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);
Oopsika,不能问更明显的问题了。使用名为 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;
}
function exponent($value,$power)
{
$c=1;
for($x = 1; $x <= $power; $x++ )
{
$c = $value * $c;
}
return $c;
}
- 如果你有 PHP >= 5.6 你可以使用 ** 运算符
$a ** $b Exponentiation Result of raising $a to the $b'th power.
echo 2 ** 3;
- 如果你有 PHP < 5.6 你可以使用 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);
阅读更多信息:
试试运行这段代码希望你的问题能得到解决。
如果你定义任何函数,那么你必须调用它 return value.
<?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);
?>
答案已经被接受了,但是我不得不来这里说这里的所有答案都使用了糟糕的算法。还有更好的。包括非常简单的,比如 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";
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);
我想创建一个函数,在其中放入两个值(值及其幂 - 示例函数:multiply(3, 3)
结果 27
)。到目前为止,我已经尝试过但失败了,我使用 Google 进行了搜索,但我一直无法找到任何结果,因为我不知道该函数的名称。
我想要的正是:
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);
Oopsika,不能问更明显的问题了。使用名为 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;
}
function exponent($value,$power)
{
$c=1;
for($x = 1; $x <= $power; $x++ )
{
$c = $value * $c;
}
return $c;
}
- 如果你有 PHP >= 5.6 你可以使用 ** 运算符
$a ** $b Exponentiation Result of raising $a to the $b'th power.
echo 2 ** 3;
- 如果你有 PHP < 5.6 你可以使用 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);
阅读更多信息:
试试运行这段代码希望你的问题能得到解决。 如果你定义任何函数,那么你必须调用它 return value.
<?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);
?>
答案已经被接受了,但是我不得不来这里说这里的所有答案都使用了糟糕的算法。还有更好的。包括非常简单的,比如 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";
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);