2013-02-27 70 views
0
class fs { 

    int lenArray; 

    void check (int [ ] array) { 

     lenArray = array.length; 

     for (int i = 0; i < lenArray; i++) 
     { 
      if (search (array, i, 5, 0)) 
      { 
       System.out.println ("We found it!!!"); 
       return; 
      }     
     } 
    } 

    boolean search (int [ ] array, int i, int num, int count) { 

     if (count == 2) 
      if (num == 0) 
       return true; 
      else 
       return false; 

     int j = i; 

     while (j < lenArray) 
     { 
      search (array, j++, num - array[i], count + 1); 
     } 
     return false; 
    } 
} 

class findSum { 
    public static void main (String [ ] args) { 

     int A[ ]= {1, 2, 3, 4}; 

     fs obj = new fs (); 
     obj.check (A); 
    } 
} 

我想檢查數組中是否有兩個數字使用遞歸相加到5。使用遞歸求總和

當我跑它時沒有結果。

任何人都可以看到問題嗎?

+0

這應該被標記爲'家庭作業'? – codebox 2013-02-27 15:26:53

+0

@codebox [tag:homework]標籤已過時,正在被刪除。 – Dukeling 2013-02-27 15:39:45

+0

@codebox不,它不是一項功課 – 2013-02-27 15:48:23

回答

1

問題是,你沒有檢查你的遞歸​​調用返回。

更換

search (array, j++, num - array[i], count + 1); 

if (search (array, j++, num - array[i], count + 1)) 
    return true; 

,它應該工作。

+0

這是工作非常感謝你,讓我開心:) – 2013-02-27 15:49:41