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。

当我运行它时,没有结果。

任何人都可以看到问题吗?

4

1 回答 1

1

问题是您没有检查递归调用返回的内容。

代替

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

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

它应该可以工作。

于 2013-02-27T15:46:48.500 回答