2014-04-03 110 views
0

所以,我的整點是打印出正數的總和,並且我添加並打印得很好,唯一的問題是它也增加了負數。遞歸,計算正整數的總和

爲什麼這可能是任何想法? 我只是想要它添加正數。

public static double computeSumPositive(double[]numbers, int count) 
{ 
double total=0; 
{ 
if(count>0) 
     { 
      total = numbers[count-1] + computeSumPositive(numbers, count -1); 
      return total; 
     } 
     else 
      return total; 
     } 
} 
+0

在你的代碼中,你檢查你要添加的數字是負數還是正數? – Blorgbeard

+0

我也試過如果(數字[count]> 0),但是這給了我一個數組超出範圍例外 – user3282760

+0

'數字[count]'不是你添加的數字。您正在添加'數字[count-1]' - 因此請檢查*該*號碼是否爲正數。 – Blorgbeard

回答

1

您需要檢查您添加的值。喜歡的東西:

public static double computeSumPositive(double[] numbers, int count) 
    { 
     double total = 0; 
     { 
      if(count > 0) 
      { 
       double val = (numbers[count - 1] > 0)?numbers[count - 1]:0; 
       total = val + computeSumPositive(numbers, count - 1); 
       return total; 
      } 
      else 
       return total; 
     } 
    } 
+0

我看,這是完全有道理的。 。這解決了它!謝謝! – user3282760

+0

@ user3282760 - 很高興幫助 – acarlon

0

因爲你不檢查,如果有問題的數字爲負,所以,如果我理解正確地將要忽略所有負數numbers陣中,像這樣:

public static double computeSumPositive(double[] numbers, int count) { 
    double total = 0; 
    if (count > 0) { 
     if (numbers[count - 1] < 0) { 
      total = numbers[count - 1] + computeSumPositive(numbers, count - 1); 
     } else { 
      total = computeSumPositive(numbers, count - 1); 
     } 
    } 
    return total; 
} 

您也不需要在if之內返回,每次代碼循環時都會返回值。

+0

當它得到一個負數時,它會停止,而不是忽略它們 – acarlon

+0

oops youre right !,我會改變我的答案。 –

+0

是的,這只是返回0 – user3282760