2016-06-11 100 views
-5
// Compute integer powers of 2. 
class Power { 
    public static void main(String args[]) { 
    int e; 
    int result; 

    for (int i = 0; i < 10; i++) { 
     result = 1; 
     e = i; 

     while(e > 0) { 
     result *= 2; 
     e--;   // What is supposed to be decrementing and how??? 
     } 

     System.out.println("2 to the " + i + 
        " power is " + result); 
    } 
    } 
}  

爲什麼在while循環中有一個遞減,但是當運行該程序時它給出的印象是遞增的。它讓我非常困惑,請問有人可以解釋這個While循環是如何運作的?While循環上的遞減

C:\用戶\恩裏克\桌面\ Hello.java> Java電動
2向0功率爲1
2到1個功率爲2
2到2功率爲4
2到3的功率是8
2到4功率爲16
2到5的功率是32
2到6個功率爲64
2到7的功率是128
2到8的功率是256
2到9功率爲512

+0

ohh ok對不起。這是我第一次。謝謝! – Javier

+0

您正在打印每次迭代都遞增的i。 e只是控制2倍的倍數 –

+0

謝謝我會嘗試你發佈的不同選擇。 – Javier

回答

1

e是指數和while循環倍增數的值,直到指數小於或等於0。

它將保持的值i除非遞減。

你也可以將它轉換成一個for循環,像這樣

for (int e = i; e > 0; e--) { 
    result *= 2; 
} 

我明白,如果這是一個學習的過程,但Math.pow功能,可以做同樣的事情。

+0

這意味着while循環從9開始循環(向後)並遞減?也正在平方(兩個冪)不加倍。感謝您的支持。 – Javier

+0

只有9的冪,是 –

+0

而且,不是這個數字是加倍。你正在乘以2 –

0

你也可以做同樣的與其他INT j這需要漸進的步驟來計算的2i-th權力:

for(int i=0; i<10; i++){ 
    result = 1; 

    for(int j=0; j<i; j++){ 
     result *= 2; 
    } 
} 

或者,如果你想使用while內環:

int j = 0; 
while(j < i){ 
    result *= 2; 
    j++; 
} 
+0

我知道還有其他的方式,但作爲一個新手想先理解這一個:) – Javier

+0

在你的代碼中,正如cricket_007解釋,'e'控制次數你的'while'循環運行每個'i'的值來計算'2'的指數:) –

+0

謝謝我會嘗試你有不同的選擇發佈。 – Javier

0

如果您關注while循環,則可以使用以下簡化/高效的程序。

int max=10, result=1, two=2; 
for(int i=0; i<=max;i++) 
{ 
System.out.println(two + " pow " + i + " = " + result); 
result*=two; 
} 
+0

謝謝我會嘗試你發佈的不同選擇。 – Javier

0

解釋你在你的問題

Loop i from 0 to n 
    Set result =1 
    Loop from 1 <= i 
     result = result * 2 // multiply 2 the number of times equal to i 
    Print result 
End loop 
+0

好吧,我理解你的解釋,剩下的是,e如何遞增運算符?爲什麼遞減運算符似乎會增加變量? – Javier

0
class Power { 
public static void main(String args[]) { 
    int e; 
    int result; 

for(int i=0; i < 10; i++) { 
    result =1 ; 
    e = i; 

    while(e > 0) { 
    System.out.println(e); // not part of the original program 
    result *= 2 ;    
    e--; 
    System.out.println(e); // not part of the original program 


} 


    //System.out.println("2 to the " + i +    
        //" power is " + result);  

} 

}} 代碼

我弄清楚,通過放置的System.out.println(E)我可以「看」變量「e」的行爲,以便理解減量。這是輸出

C:\用戶\恩裏克\桌面\ Hello.java> java的功率:1,0,2,1,1,0,3

E = 1(迭代1),2^1,e(1)遞減到0,e = 2(迭代2),2^2,e(2)遞減到1,e = 1重新輸入雖然2^1已被註冊,但被忽略, e(1)遞減到0,e = 3(迭代3),2^3 ...