全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2425 4
2016-04-13
如题,我在编程时遇到了需要用递归函数的地方,但是对递归函数的运行机理不是十分清楚,现在举一个简单的例子来说明我遇到的疑问:
复制代码
上述代码定义了一个函数exper,在参数值分别为10,3时,结果如下:
复制代码
这不难理解,而且说明7,4,1,-2是按照产生的先后顺序反向排列的,亦即先产生的在上面。若将代码改成:
复制代码
还是选择同样的参数值,那么结果是:
复制代码
我想弄明白的是,当aa第一次的取值为7时,满足if的条件,此时应该进行下一次的exper循环,这个时候会不会执行“print(aa)"?若是执行的话,那么第一次的aa输出值为7,按照更改前的理解,从上到下应该是”7,4,1,-2“才对。若是不执行,那么应该只有最后一次迭代的结果-2作为输出值。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-4-13 20:38:20
求解答~~~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-4-14 01:39:33

最内层调用的时候aa=-2所以if语句不能通过这个时候就执行下一个语句print(aa),所以就先打印出-2,然后这层调用执行结束退到上层调用依次打印1,4,7.

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-4-14 09:02:13
毓闻 发表于 2016-4-14 01:39
最内层调用的时候aa=-2所以if语句不能通过这个时候就执行下一个语句print(aa),所以就先打印出-2,然后这层调 ...
也就是说,递归函数在递归条件不满足时会返回上一次运算?可是为什么会返回上一次运算呢?直接输出aa的值不就可以结束了么?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-4-14 19:10:00
好吧,看来这就是递归函数的运行机理了,执行完最后一行之后没有可以执行的操作了于是就返回递归的上一层执行print(aa)。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群