2014-02-10 4 views
0

Следующая программа представляет собой рекурсивную программу для проверки повторяющихся записей в массиве. Программа компилируется без ошибок, однако после ввода аргументов командной строки и ввода ввода она не продолжается. Курсор просто мигает! Он также не возвращает ошибки Runtime! Если кто-то объяснит, почему это происходит, было бы очень полезно! Благодаря! :)Почему не выполняется программа

import java.io.*; 
    class RepeatEntries_Recursive 
    { 
     static int i=0,flag=0; 
     public static void main(String[] args) throws IOException 
     { 
      int[] inp = new int[6]; 
      for(int k=0;k<args.length;k++) 
       inp[k] = Integer.parseInt(args[k]); 
      boolean hasItRepeated = Repeating(inp,i); 
      if(hasItRepeated == true) 
       System.out.println("\nYes, there are entries that repeat in the array!"); 
      else 
       System.out.println("\nNo, entries don't repeat in the array"); 
     } 
     static boolean Repeating(int[] inp,int i) 
     { 
      for(int j=0;j<inp.length;j++) 
      { 
       if(inp[i] == inp[j]) 
        flag = 1; 
       while(i<inp.length-1) 
        Repeating(inp,i+1); 
      } 
      if(flag==1) 
       return true; 
      else 
       return false; 
     } 
    } 
+0

Какие аргументы вы используете? – Krease

+0

Я пытаюсь с аргументами командной строки - 12 1 56 1 – vipulnj

ответ

6
while(i<inp.length-1) 
    Repeating(inp,i+1); 

Ваша программа никогда не может выйти из этого цикла.

+0

Ха-ха, как раз собирался опубликовать это сам – Krease

+0

Не только это, даже без цикла, рекурсия бесконечна. – Maroun

+0

Нет, @ ᴍarounᴍaroun, я не думаю, что это так. Без цикла 'i' в конечном итоге достигнет длины массива, что останавливает рекурсию. –

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