2015-04-18 4 views
1

Я работаю над стеком и рекурсией. Пусть говорят, у меня есть метод, как это:Рекурсия и стек в Java

public class RecursionStack { 
    public String countIterative(int from, int to) { 
     // do something? Use a loop? 
    } 
} 

Может кто-нибудь помочь мне нравится, как я могу вернуть строку из номера, присвоенного номеру, указанному (используя цикл?) Так что, когда я распечатать это будет выглядеть примерно подобный

System.out.print(RecursionStack.count(5, 11)); 
prints: 5 6 7 8 9 10 11 

спасибо!

+1

Вы попробовали что-то самостоятельно? Рекурсивный метод - это тот, который называет себя. Все рекурсивные функции должны иметь базовое условие, которое завершает это циклическое поведение и рекурсивное определение, которое вызывает сам метод. Google некоторые примеры рекурсивных проблем, а затем попытайтесь определить один для себя. Если после попытки столкнуться с какой-то проблемой, вернитесь сюда с вашей конкретной проблемой и попросите предложение! –

+2

В чем проблема? Это похоже на цикл от 'from' до' to' и печать каждого значения индекса. Должно быть просто. –

+0

благодарим вас за все ваши советы – John

ответ

2

Рекурсивный метод один, который называет себя. Кроме того, вы не можете вызвать нестатический метод без экземпляра класса. Вы можете написать итеративный вариант, как,

public static void countIterative(int from, int to) { 
    for (; from <= to; from++) { 
     System.out.printf("%d ", from); 
    } 
} 

и рекурсивная версия как

public static void countRecursive(int from, int to) { 
    if (from <= to) { 
     System.out.printf("%d ", from); 
     countRecursive(from + 1, to); 
    } 
} 

, и вы могли бы назвать их как

countIterative(5, 11); 
System.out.println(); 
countRecursive(5, 11); 
System.out.println(); 

и вы получите требуемый выход.

+0

спасибо. Я понял! – John

2

Попробуйте это:

public class RecursionStack { 
    public static String countIterative(int from, int to) { 
     // the following if is your base case 
     // and it is from here that you can stop 
     // performing recursion 
     if (from == to) { return " " + to;} 
     else { // this else is default and is the basis of the "recursiveness" of the function 
      String toReturn = from + " " + countIterative(from+1, to); 
      return toReturn; 

     } 

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