请问定义的函数怎么走?
当执行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
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值。
这就是“递归”
举报