void reverse(char s[]) // 递归法倒着输出字符串
{
int len;
len=strlen(s);
if(len==1) // 串长为1则直接输出,也是递归结束条件
{
printf("%c",s[0]);
}
else
{
reverse(s+1); // 从下一字符倒着输出
printf("%c",s[0]); // 输第一个字符
}
}
这个递归程序是正确的,你不理解的原因,对递归原理没有完全搞懂造成的。
要跟你解释半天你才能明白,一旦你明白了,就觉得递归很简单,
递归结束,只表示这一次结束,堆栈中还有一大串子程序还未完呢。要逐一递归
返回。
输出其他字符的原因是每次递归调用reverse(s+1);后都会执行到printf("%c",s[0]);所以其他字符都打印出来了