簡體   English   中英

如何使用PHP創建自己的pow功能?

[英]How I can create my own pow function using PHP?

我想創建一個函數,其中我放置兩個值(值及其功率 - 示例函數: multiply(3, 3)結果27 )。 到目前為止我已經嘗試但失敗了,我使用谷歌進行了搜索,但我找不到任何結果,因為我不知道這個函數的名稱。

我想要的完全是:

3,3 => 3 x 3 x 3 = 27
4,4 => 4×4×4×4 = 256

我嘗試了什么:

function multiply($value,$power){
    for($x = 1; $x <= $value; $x++ ){
        return $c = $value * $power;
    }   
}
echo multiply(3,3);

答案已被接受,但我不得不來這里說這里的所有答案都使用了一個糟糕的算法。 有更好的。 包括非常簡單的那些,例如通過平方取冪 ,將復雜度從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";

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將$ a籌集到$ b'th權力的結果。

echo 2 ** 3;
  • 如果你有PHP <5.6你可以使用pow:

數字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);

閱讀更多:

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

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

只是嘗試運行此代碼我希望您的問題將得到解決。 如果定義任何函數,則必須將其稱為返回值。

<?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);

    ?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM