2013-12-13 4 views
-2

Это вопрос в компьютерной науке.Рекурсивный метод определения вызова вызова

public void doSomething(int value) 
{ 
    if(0 < value && value < 10) 
    { 
     doSomething(value – 1); 
     doSomething(value + 1); 
     System.out.print(" " + value); 
    } 
} 

Какие из перечисленных ниже будет печататься в результате DoSomething вызова (4)? A. 4 3 2 1 5 6 7 8 9 B. 4 3 5 2 6 1 7 8 9 C. 9 8 7 6 5 1 2 3 4 D. 9 8 7 1 6 2 5 3 4 E. Ничего не будет напечатано из-за бесконечной рекурсии.

Поскольку я разрабатывал решение - мне кажется, что для меня бесконечная рекурсия Е. Это правильно? Каков самый быстрый способ получить решение, учитывая, что каждый множественный выбор занимает менее 2 минут. Любая помощь в получении самого быстрого подхода поможет.

Этот вопрос должен быть отслежен. Вы не можете запустить код, чтобы проверить ответ.

+1

Попробуйте и узнайте? – TypeIA

+0

Я могу написать код и запустить его. Но он должен быть отслежен рукой. – user3096748

+0

Ищите лучший/быстрый подход для ручной трассировки кода. – user3096748

ответ

0

Это бесконечная рекурсия, так как значение всегда уменьшается и увеличивается на 1.

+1

Это только бесконечно, если начальный вызов имеет значение «значение» между 1 и 9 включительно. Вызов 'doSomething (-2)' ничего не напечатает и немедленно прекратится. В противном случае вы правы. – TypeIA

2

Ваш вопрос производит StackOverflow из-за бесконечной рекурсии. В следующий раз вы должны попробовать это для себя.

+0

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

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