2015-11-15 121 views
0

我已經給出了下面的代碼,我試圖鍛鍊該函數如何工作。我不明白當你進入while循環時會發生什麼。結果是否乘以x的值?爲什麼n變低?我主要不明白result *=x;是做什麼的。電源函數C++

//power(x, n) raises integer x to the power n 
//no negative powers 
int power(int x, unsigned n) 
{ 
    int result=1; 
    while (n>0) 
    { 
     result *= x; 
     --n; 
    } 
    return result; 
} 

回答

4

提示,下面幾行是等價的(在這方面):

result *= x; 
result = result * x; 

--n; 
n = n - 1; 

所以你的函數寫儘可能地簡單:

int power(int base, int exponent) { 
    int result = 1; 
    while (exponent > 0) { 
     result = result * base; 
     exponent = exponent - 1; 
    } 
    return result; 
} 

你應該有一個更輕鬆地理解它現在。

0

(x,n)power函數只乘以x乘n次。

result *= x;表示result = results * x;

while loop確保x已乘以n次。

--n表示n = n - 1。如果n=0,則表示x已乘以n次。然後,循環結束。