if(str[0] == 'a' && str[length -1] == 'b')
return process_multi_char(str+1, length-2);
else
return FALSE;
}
BOOL process(const char str[], int length)
{
if(NULL == str || length < 2 || (0 != length % 2))
return FALSE;
return process_multi_char(&str[0], length);
}
这里return的好处就是充分把字符串进行了拆分。我们按照定义,先从基本的问题下手,大事化小,小事化了。当然这里的小事就是字符串这有两个字符的情形,也是最底层函数的出口。要不然函数就会一致不停地处理下去,这是没有意义的。计算过程中一旦发现了不合法的运算,那么整个迭代的过程就会结束,快速回溯,输出结果。所以说要想写好递归或者是用到堆栈结构的代码时,必须考虑代码的入口和出口的把握,而return就是最好的选择,什么时候return,什么时候迭代都要把握时机,否则很容易陷入到死循环当中去。