2013-01-21 330 views
-2

好吧,我正在通過C++的bjarn stroustrups書籍,他的一個練習要求我在不使用乘法運算符的情況下計算數字的平方。所以我開始使用的鍋爐板代碼是一個函數,稱爲int類型的square,其參數x爲int類型,代碼塊爲return x * x;很簡單。所以我想到了它,我知道我需要一個循環,我知道它可能是一個for循環。我知道我想要循環聽起來像這樣將x添加到x並循環x次的值。我剛開始使用C++,所以我不知道如何創建循環。有任何想法嗎?在C++中對數字進行平方運算

+1

閱讀手冊?如果你只是想問一個問題,你會做很多問題。閱讀手冊,如果遇到麻煩,請回來。 – SJuan76

+0

'exp(log(x)+ log(x))' – Mysticial

+0

男人,它真的很糟糕,試圖在手機上編輯評論。我放棄了......太糟糕了,你也無法刪除對手機的評論。 –

回答

1

你的情況B = 2

int pow(int a, int b) 
    { 
     if (b == 0) 
     return 1; 
     int answer = a; 
     int increment = a; 
     int i, j; 
     for(i = 1; i < b; i++) 
     { 
     for(j = 1; j < a; j++) 
     { 
      answer += increment; 
     } 
     increment = answer; 
     } 
     return answer; 
    } 
+0

感謝你的回答,我在老師的幫助下計算出來了。 – user1995779

1

所以在這個問題上的整點真的只是爲了讓自己的乘法功能。有幾種方法可以做到這一點。你可以遞歸地(個人認爲這是最簡單的)或通過循環來做到這一點。 遞歸:

int mult(int a, int b){ 

    if (b == 0) { 
     return 0; 
    } 

    b -= 1; 

    return (a + mult(a, b)); 
} 

int power(int base, int deg){ 
    if (deg == 0) { 
     return 0; 
    } 

    deg-=1; 

    return mult(base, base)+power(base, deg); 
} 

或作爲@Cris上面那樣不使用嵌套的for循環遞歸:

int pow(int a, int b) 
    { 
     if (b == 0) 
     return 1; 
     int answer = a; 
     int increment = a; 
     int i, j; 
     for(i = 1; i < b; i++) 
     { 
     for(j = 1; j < a; j++) 
     { 
      answer += increment; 
     } 
     increment = answer; 
     } 
     return answer; 
    } 
相關問題