prev = make(n-1)这个代码是怎么实现递归的

来源:3-9 格雷编码-代码演示

aibo

2020-09-06

比如n是4的情况,那么prev = make(3);
代码继续执行:

  1. max = Math.pow(2, 4) - 1 = 15
  2. 函数开始执行时提前创建了值为空数组的变量result
  3. 执行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

是的,每次递归必须有结束条件,不然就死循环了

0
0

JavaScript版 数据结构与算法

填补前端同学的算法短板,掌握面试中最常见的算法与数据结构

2467 学习 · 395 问题

查看课程