2013-02-27 3 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

+0

@codebox Тег [tag: homework] устарел и в процессе удаления. – Dukeling

+0

@codebox нет, это не домашнее задание –

ответ

1

Проблема в том, что вы не проверяете, что возвращают ваши рекурсивные вызовы.

Заменить

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

с

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

и он должен работать.

+0

Это так большое спасибо, ты меня радуешь :) –

Смежные вопросы