请问定义的函数怎么走?

来源:5-9 递归函数练习

YF58

2015-11-19 15:37

当执行age=getAge(numPeople-1)+2时,是先执行getAge(numPeople-1),然后第一个是getAge(4),接着是重新走一遍这个定义的函数吗,不断重复这个步骤直到numPeople=1,返回age=10,然后numPeople会自动增值?其他的人就都知道了岁数吗,这个定义的函数是这样走的吗?

写回答 关注

1回答

  • onemoo
    2015-11-19 16:06:20
    已采纳

    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值。

    这就是“递归”

    YF58

    非常感谢!

    2015-11-27 20:34:12

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926212 学习 · 20797 问题

查看课程

相似问题