递归实现字符串倒置的疑问

来源:百度知道 编辑:UC知道 时间:2024/06/22 06:04:04
程序如下:
void reverse(char *s)
{
if(*s)
reverse(s+1);
else
return;
cout<<*s;
}
我看不懂这个递归算法是怎么来实现倒置的,请大家指教!谢谢!

这个算法没有将s真正倒置,只是将s倒置输出
if(*s) //判断有没有到达\0
revserse(s+1); //没到,则处理下一位
else
return; //到了结尾\0,返回
cout<<*s; //输出当前指向的字符

比如s是"ab",首先判断字符a,不是\0,那么处理下一位b,b也不是\0,所以再处理下一位\0,这时,直接返回,然后,到了cout<<*s,这时是处理b的,所以输出b,最后,处理b的reverse也返回,到了处理a的cout<<*s;输出a,所以就输出了ba