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