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