-1
在递归,如果我有以下示例代码递归和while循环
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){/ *无限* /}。这并不是内存不足的原因是每个函数调用都被视为一组新的变量 - 这意味着每次递归都需要更多的内存(您需要了解函数调用堆栈的工作原理)。循环不一定需要每次更多的内存。 –