在使用递归函数时,如果函数的形参带来的信息比较明确的的话,例如形参为int *a,int start,int end三个参数的话,分别表示数组a和a的起始小标、终止下标;这样递归的时候用起来会比较方便。例如:
int fun(int a*,int start,int end) { .... }
但在有的时候,题目给定的函数的参数可能信息不是很明确,例如只给你一个数组或者一个vector的形式:
int fun(int a*) { .... }
这样的话,递归过程中就比上述情况麻烦了。此时可以增加一个函数,该函数的形参为int a*,int start,int end。这样再去递归的时候,直接递归这个新定义的函数会更方便。例如:
int fun(int a*) { .... funCore(a,start,end); } int funCore(int a*,int start,int end) { .... }
这一点需要注意,《剑指offer》面试题33就可以采用类似的思想。