由一个翻转字符串程序看递归
2014-10-14 17:13
239 查看
大伙都知道递归就是一个函数自己调用自己,可是对于递归的过程我总是很迷惑。今天正好看到一个程序,就拿来仔细分析分析。
函数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。
#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。
相关文章推荐
- python程序2(递归查找某一个文件夹下所有的文件是否含有某个特定的字符串,并打印该文件名)
- 一个打印输入字符串所有排列的递归程序
- Java 写一个方法判断一个字符串是否对称 "asdfgasdfg"、编写一个程序,将下面的一段文本中的各个单词的字母顺序翻转,
- 递归翻转一个字符串
- 编写一个程序 将字符串翻转
- 将一个整数N转换成字符串!(递归和非递归、及——进制转化)
- 一个十分简单的java字符串分词,去重复,排序小程序
- 一个长度为10000的字符串,通过随机从a-z中抽取10000个字符组成.请用c#语言编写主要程序来实现
- 如何编写从M中选N的组合数程序,一个不用递归方法设计,一个用递归方法设计
- 正则表达式(一个字符串翻转的例子)(http://www.cnblogs.com/hai98)
- 今天写了一个字符串转16进制的小程序,改成C++.Net。
- 一个简单的C#倒转字符串程序
- 发一个字符串求值的程序
- 第十章p202的程序:将一个全是字母的字符串转化为大写(用栈来传递)
- 编写一个程序,用parseInt()方法将字符串100由十六进制转换为十进制的int型数据。再用valueOf()方法将字符串12345678转换为long型数据。
- 设计一个程序,从键盘上输入若干字符串,利用算法库中的查找函数对给定的字符串进行查找,将查找后的结果输出
- 一个为字符串中的网址加上链接的程序例子
- 用递归方式翻转字符串
- (课本习题)一个简单的用递归解决的小程序
- 写一个控制台程序,给字符串中每个单词加上双引号.