請問定義的函數怎么走?
當執行age=getAge(numPeople-1)+2時,是先執行getAge(numPeople-1),然后第一個是getAge(4),接著是重新走一遍這個定義的函數嗎,不斷重復這個步驟直到numPeople=1,返回age=10,然后numPeople會自動增值?其他的人就都知道了歲數嗎,這個定義的函數是這樣走的嗎?
當執行age=getAge(numPeople-1)+2時,是先執行getAge(numPeople-1),然后第一個是getAge(4),接著是重新走一遍這個定義的函數嗎,不斷重復這個步驟直到numPeople=1,返回age=10,然后numPeople會自動增值?其他的人就都知道了歲數嗎,這個定義的函數是這樣走的嗎?
2015-11-19
舉報
2015-11-19
numPeople不會自動增值,每一次調用getAge函數,numpeople都是那個函數自己擁有的,numpeople的值就是該函數被調用時傳入的參數值/
當在getAge(5)中執行?age=getAge(numPeople-1)+2 時確實是再次調用了getAge函數(調用的是getAge(4)),程序流程即進入getAge(4)中,請注意:前一次的getAge(5)函數并沒有結束,也就是上一個getAge函數停在?age=getAge(numPeople-1)+2 這一句,在等待getAge(numPeople-1)的結果。
那么在getAge(4)中還是在?age=getAge(numPeople-1)+2 處又調用了getAge函數,這次傳入的參數是4-1,程序流程又進入了getAge(3)中...
直到在getAge(2)中又調用了getAge(1)時,getAge(1)會返回age=10,它的調用者getAge(2)得到這個返回值,加上2得出它函數中的age,再把age返回給它的調用者getAge(3)...一層層返回到最上級的調用者處,就得到了第一個調用者的age值。
這就是“遞歸”