-1
В рекурсии, если у меня есть в следующем примере кодарекурсии и во время цикла
public class StringPractice {
public static void main(String[] args){
hello();
}
public static void hello(){
System.out.println("heloo world!");
hello();
}
}
это приведет к StackOverflowError. Однако, если я использую цикл while, например while (true) и распечатку функции hello, он продолжает цикл с выходом, но не дает нам StackOverFlowError. Может кто-нибудь объяснить, почему? Что другое?
и почему, если я использую цикл while без логического тестирования, это не приведет к stackoverflow? цикл просто продолжает цикл. –
О, спасибо, я думаю, что понял! –
Вы можете сделать цикл продолжением навсегда, если только вы не предоставите условие, которое его прервет. 'while (true) {/ * делать бесконечно * /}. Причина, по которой это не заканчивается, состоит в том, что каждый вызов функции обрабатывается как новый набор переменных - это означает, что в каждой рекурсии требуется больше памяти (вам нужно прочитать, как работает стек вызовов функций). Цикл не обязательно требует больше памяти каждый раз. –