2016-05-30 97 views
-1

誰能給我解釋一下爲什麼這個程序不能正常工作?這個程序應該做什麼?

function powerf(base,exp){ 

    if(exp==1) 
     return 1; 

    if(exp % 2 == 0)  
     return powerf(base,exp/2); 

    else 
     return 2*powerf(base,exp-2); 
} 
+2

什麼是該做的? – gurvinder372

+0

什麼不起作用? – brk

+0

此程序應返回功率的值這樣 例如:powerf(2,3)==> 8 但是當我運行它的結果是powerf(2,3)==> 2 – maryam

回答

0

使用此代碼:

<body> 
    <p id="x"></p> 
    <script> 
     function powerf(base, exp) { 
     var result = 1; 
     while(exp--) { 
     result *= base; 
     } 
    return result; 
} 
     document.getElementById("x").innerHTML = powerf(2,3); 
    </script> 
</body> 
+0

我要解決它,而無需使用Math.pow – maryam

+0

@maryam,OK。我更新它。 – Ehsan

0

此程序應返回功率的值是這樣,例如: powerf(2,3)==> 8,但是當我運行它結果是powerf(2,3)==> 2

這是因爲,當你說powerf(2,3),它會持續else部分,併成爲

powerf(2,3) - >2*power(2,1) - >2*1(因爲任何提高到電源1 1按照您的邏輯)

爲什麼就不能有

function powerf(base, exp) 
{ 
    return Math.pow(base, exp); 
} 
+0

因爲我必須解決這個程序,而不使用Math.pow :) 我應該使用遞歸 – maryam

+0

@maryam可以'exp'是一個指數或負值?在這種情況下,您還需要爲所有這些場景設計邏輯。 – gurvinder372