您的位置:首页 > 其它

由一个翻转字符串程序看递归

2014-10-14 17:13 239 查看
大伙都知道递归就是一个函数自己调用自己,可是对于递归的过程我总是很迷惑。今天正好看到一个程序,就拿来仔细分析分析。

#include<stdio.h>
void reverse(const char *const sptr)//将字符串反着输出
{
if(sptr[0]=='\0'){
return;
}
else{
reverse(&sptr[1]);
putchar(sptr[0]);
}
}

int main(void)
{
char s[50];
printf("输入字符串\n");
gets(s);
printf("相反顺序输出:\n") ;
reverse(s);
}
这是一个让我们输入字符串,再对字符串翻转输出的程序。

函数reverse()用递归编写。我们知道字符串的最后一个字符为空字符‘\0’,所以递归的结束条件为==‘\0’。

假设我们输入了字符串abc,这时候'\0'会被加在数组的末尾,即为abc\0。

调用reverse()函数,先进入if判断,a!=’\0‘,故执行reverse(&sptr[1]),这相当于把原来数组abc\0的子数组bc\0赋给reverse函数。接着把a\0赋给reverse,最后\0==\0,就return。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐