2017-05-26 44 views
1

是否有可能抽取一千個項目直至剩下一個項目,如果有的話需要多少個抽取循環?通過抽取,我的意思是刪除只有十分之一,並留下其餘的,例如,第一個週期:1000 - 900(刪除第十:100) 第二週期:900 - 810(刪除第十:90)DECIMATION LOGIC

+0

也許問,在[MathOverflow(https://mathoverflow.net/) – jhhoff02

+0

我懷疑他們會告訴我,現在我已經發布在這裏 –

+0

@ jhhoff02請注意,這個問題可能是[MathOverflow](https://mathoverflow.net/)的主題。 [MathOverflow](https://mathoverflow.net/)僅用於研究級數學問題。詳情請參閱[他們的幫助中心](https://mathoverflow.net/help/on-topic)。 – Pang

回答

0

這取決於您使用的數字類型。從輸出

class Main { 
    public static void main(String[] args) { 
    int i = 0; 
    double val = 1000; 
    while (val > 1) { 
     val -= val/10; 
     i++; 
     System.out.println("val = " + val + " in iteration " + i); 
    } 
    } 
} 

摘錄: 如果使用浮點數,你最終會達到一個值小於1(不完全雖然,如下面的java程序的輸出顯示)

val = 900.0 in iteration 1 
val = 810.0 in iteration 2 
val = 729.0 in iteration 3 
... 
val = 1.0611166119964726 in iteration 65 
val = 0.9550049507968253 in iteration 66 

如果使用整數類型,將不會達到1,因爲只要val == 9,它將不會變小,因爲除法結果爲0。我添加了一個檢查來捕獲該條件以防止無限循環。

讓我們一起來看看:

class Main { 
    public static void main(String[] args) { 
    int i = 0; 
    int val = 1000; 
    while (val > 1) { 
     int subtract = val/10; 
     if (subtract == 0) { 
     System.out.println("subtracted value is 0 for value " + val + " at iteration " + i); 
     break; 
     } 
     val -= subtract; 
     i++; 
     System.out.println("val = " + val + " in iteration " + i); 
    } 
    } 
} 

輸出:

val = 900 in iteration 1 
val = 810 in iteration 2 
... 
val = 10 in iteration 49 
val = 9 in iteration 50 
value 9 repeats at iteration 50