我正在通過下面的代碼,我不明白的部分是如何「離開」n值成爲2,5和10.我理解遞歸調用的第一部分,直到n == 0,並且返回將控件移動到else部分並打印(0%2)。那之後程序不應該停止嗎?調試遞歸函數
void fun2(int n){
System.out.println("Entering"+n);
if(n==0)
return;
else{
fun2(n/2);
System.out.print("Leaving"+n+"---->");
System.out.println(n%2);
}
}
輸出:
所有的 Entering5
Entering2
Entering1
Entering0
Leaving1---->1
Leaving2---->0
Leaving5---->1
Leaving10---->0
這是一種方式進行調試。另一種方法是在調試器中逐行執行。 –
另外,這段代碼的行爲與你期望的行爲有什麼不同? –
我不知道如何離開獲得「n」進入的價值。我幾乎不得不使用遞歸來追蹤這似乎是一個相當混亂的任務。你能解釋一下嗎?這不是我的代碼。我只是添加了打印 –