-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){/ *無限* /}。這並不是內存不足的原因是每個函數調用都被視爲一組新的變量 - 這意味着每次遞歸都需要更多的內存(您需要了解函數調用堆棧的工作原理)。循環不一定需要每次更多的內存。 –