prev = make(n-1)这个代码是怎么实现递归的
来源:3-9 格雷编码-代码演示

aibo
2020-09-06
比如n是4的情况,那么prev = make(3);
代码继续执行:
- max = Math.pow(2, 4) - 1 = 15
- 函数开始执行时提前创建了值为空数组的变量result
- 执行for循环,for循环的结束条件需要prev的长度,那这个时候程序是去计算prev - 也就是去执行make(3)了吗?
如果是去执行make(3)了,那make(3)是不是重复上述步骤在执行for循环之前去执行make(2)呢?
那这样的话,只有在n等于2的时候prev才被赋值[‘0’, ‘1’],那这个make(2)之前的递归执行make函数是怎么取到prev的值的呢?
我猜测难道是在执行完make(2)后,程序存储了make(2)的返回值再去向上填上之前递归执行make时prev的占位吗?
也就是说如果以后碰到类似问题,只要有结束条件,就可以通过占位返回值让程序去执行,并最后返回正确的值?
写回答
1回答
-
慕粉1926294646
2020-11-07
是的,每次递归必须有结束条件,不然就死循环了
00
相似问题