如何使用 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);

阅读更多信息:

http://php.net/manual/en/language.operators.arithmetic.php

http://php.net/manual/en/function.pow.php

试试运行这段代码希望你的问题能得到解决。 如果你定义任何函数,那么你必须调用它 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);