遞迴 Java

code_7發表於2015-06-07

遞迴的理解難點在於先有一個壓棧,然後當尋找到遞迴出口時,會從棧頂return。如果您還不太明白是什麼意思,先看下面程式碼,想想結果是什麼?

public class test1{
	static int i = 0;

	public static int test(){
		while(i < 7){
			i++;
			i = test();
		}
		System.out.println(i);
		return 520;
	}
		
	public static void main(String[] args) {
		test();
		}
}

最後結果是:

7
520
520
520
520
520
520
520


簡單說明一下這個過程:main方法 --》 test() --》 i=0 滿足while(i<7), i=1, i=test()呼叫test() 並把值壓入棧底 --》依然滿足,再次重複上面過程,往遞迴棧中壓入新的值 --》…… --》i=6時,再次進入while(){……}程式碼段:i=7,最後一次呼叫test(),這樣一共呼叫了7次,system.out.println(i);列印出7,return 520;return給誰?怎麼return?這才是遞迴的理解難點!此時程式碼並沒有結束!==》返回,棧中依次return,把餘下的程式碼執行完!System.out.println(i);再次列印520 ==》呼叫7次!7個“我愛你”!













相關文章