2013-10-26 159 views
0

「我們不需要按照任何特定的順序來枚舉分數,我們只需要確保只要循環繼續進行,每個有理數最終將被構建。約:不知道它爲什麼會產生這樣的結果

for i=0 to infinity 
    for j=1 to i 
     display i/j 
    next j 
next i 

你應該能夠看到,如果你等待足夠長的每一個部分,最終將顯示實際上我們產生每個分數因爲相同的語詞的時間像1/2無限多,2。 /4.4/8等等。「

爲什麼輸出是1/2,2/4等......?我想不通:((翻譯此僞轉換爲C或C++語言,也許我沒有正確的事:

#include <stdio.h> 

int main() 
{ 
    for (int i = 0; i < 100000000000000000; i++) { 
    for(int j = 1; j < i; j++) { 
     printf("%f\n", (float)(i/j)); 
    } 
} 
return 0; 
} 
+1

如果只有我每次有人問這個問題...... - 。 - 「 – 2013-10-26 06:58:47

+1

'爲什麼輸出是1/2,2/4等......?我無法弄清楚:(( - ) - 即使我不行,你將永遠不會得到類似上面代碼的C中的輸出,我不認爲這個問題是完全清楚的 – Sadique

+0

你的輸出(一旦你做NPE的修復) '1,0.5,...'如果你想分數,你需要分別打印分子和分母 – Adam

回答

2
  • 爲什麼輸出是1/2,2/4等......?

我假設你引用了這樣一句話:

事實上,我們正在創造每個分數因爲相同的語詞的時間 無限多像1/2,2/4。 4/8等等。「

這並不是說輸出是1/2,2/4,4/8。它只是說任何特定的分數,例如1/2,出現一個Ie 1/2 == 2/4 == 4/8 == ...依此類推

+0

好吧。感覺...謝謝! – ner0x652

4

i/j返回整數結果(你再投給float

。更改

(float)(i/j) 

((float)i)/j 

另外,根據日您的平臺上的int類型的電子郵件範圍100000000000000000可能太大而不適合int

+0

已更改,仍然不會產生我的介紹文本中指定的結果 – ner0x652

相關問題