为了账号安全,请及时绑定邮箱和手机立即绑定

请问定义的函数怎么走?

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

正在回答

1 回答

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

这就是“递归”

2 回复 有任何疑惑可以回复我~
#1

YF58 提问者

非常感谢!
2015-11-27 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926212    人
  • 解答问题       20797    个

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

进入课程

请问定义的函数怎么走?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信