首先要分析环境。环境就是这段代码要用到的变量、返回值。对于循环,理论上循环体外的所有变量它都可以访问,但是这里要看清楚,它具体使用了哪些,修改了哪些。对应地,循环体访问过的变量,就是递归函数需要接受的参数(包括index);而循环体改变的变量,可能是递归函数的返回值,这个根据情况而定,有些变量仅仅是作为传递的逻辑依据,比如index。
然后,循环的进入下一轮,包括条件满足,以及内部的continue,都可以在递归函数中实现为用新参数递归调用。而循环的终止,包括条件不满足以及break,都可以在递归函数中实现为返回值。
注意,由于循环的每一体不可能驻留,所以循环一定可以实现为尾递归。
tips:找出设计的变量,找出终止的情况(成功返回,失败返回),找出进入下一轮的情况(递归)