巧妙运用递归实现字符串的倒序输出
要想让输入的字符串倒序输出有很多种方法,我们可以用字符串处理函数,也可以将字符数组内的元素进行交换,在这里,我们用递归的方式来封装一个可以将字符串倒序输出的函数。
首先我们知道,递归程序层层递归,在递归之后的程序一定是最后才执行的,既然我们要倒序打印字符串,第一个字符一定是最后才打印的,然而很巧的是,我们这个倒序输出函数传址传的也是第一个字符的地址,所以我们就可以写成
void reverse_string(char* string)
{reverse_string(string+1); printf("%c",*string);
}
但是递归是需要条件的,若没有条件,则会无限递归下去,我们得找一个条件让它停下来。
我们知道,字符串的最后一个字符是 ’ \0 ’ ,那么当我们遇见 ’ \0 ',是不是就意味着就不用继续调用递归了呢?
假设可以,我们来试试结果
void reverse_string(char* string)
{if(*(string)!='\0'){reverse_string(string+1);} printf("%c",*string);
}
如果递归到最后一个字符时, string + 1 就是 ‘\0’ 的地址,当不满足条件,将从 ‘\0’ 开始打印,那我们所作的努力都会前功尽弃。所以我们就得在确保第一个字符不是 *’\0’*的情况下判断下一个字符到底是不是 ‘\0’
可以写成
void reverse_string(char* string)
{if(*(string+1)!='\0'){reverse_string(string+1);} printf("%c",*string);
}
也可以写成
void reverse_string(char* string)
{if (*(++string) != '\0'){reverse_string(string);}printf("%c",*(string-1));
}
通过这样的层层递归,最终我们得到了我们想要的结果。
下面是这个递归程序的原理图以及供参考的代码:
void reverse_string(char* string)
{if (*(++string) != '\0'){reverse_string(string);}printf("%c",*(string-1));
}
int main()
{char arr[10] = "";scanf("%s",arr);reverse_string(arr);return 0;
}
巧妙运用递归实现字符串的倒序输出相关推荐
- c语言递归将字符串abcde倒序输出,请教C语言字符串倒序输出
满意答案 bwrgqefgg 推荐于 2017.10.03 采纳率:55% 等级:10 已帮助:2169人 #include #include void main() { char string ...
- 【C语言函数递归】编程将字符串s倒序输出,要求利用函数递归实现。
编程将字符串s倒序输出,要求利用函数递归实现. **输入格式要求:"%s" 提示信息:"input your string:\n" **输出格式要求:" ...
- 用递归思想轻松实现字符串的倒序输出
如题目所言,代码如下: #include<iostream> using namespace std; void reverse(){char a;cin>>a;if(a!=' ...
- LeetCode输入字符串,倒序输出---C语言
输入字符串,倒序输出-C语言 #include<stdio.h> #include<string.h> #include <iostream> using name ...
- 将一个字符串/字符串数组倒序输出
1.将字符串倒序输出 //1.1直接遍历后倒序输出public void reverseList(){//1.将字符串如A excellent student倒序输出String str = &quo ...
- C语言简单递归实现字符串逆序输出
题目内容的 "注意" 已经侧面规定了要用递归来实现: 输入是一个可能含有空格的串说明要用gets来读入字符串,如果利用scanf的话是无法读入一段含有空格的串. 下面先上一般方法: ...
- c 语言将字符串abcde倒序输出,C语言-实现字符串倒序输出
方法1: Action() { //倒序输出 char *src="abcdefgh123"; char *desc; desc=(char *)malloc(100*sizeof ...
- 用C语言写个字符串一维数组的逆序输出,c语言怎么用数组倒序输出
scanf("%d",&a[i]); //倒序输出数组内容 for( int *ptr=a+SIZE; ptr!=a; ) printf( "%d\t" ...
- 字符串逆序(数组倒序输出)
题目信息: 样例输出 copy edcba 新手导读: 题目描述信息:字符串的倒序输出肯定是字符数组的倒序输出: 输入信息:输入条件是最后字符不为回车:所以应该先用变量存入字符进行判断,再使用这个字符 ...
最新文章
- python使用fpdf生成发票格式的pdf文件包含:文字、图片logo、表格、条形码等;
- 从Setting.settings到Resource.resx
- 浅析Banner设计
- [收集]美女与野兽——萨尔和吉安娜的绯闻
- [翻译]当SA帐号丢失时怎么办
- 源码0501-07-GCD的基本使用
- UVA12416 Excessive Space Remover【对数+字符流】
- jenkins 手动执行_Jenkins环境配置篇-节点增加
- 电子计算机及其部件,2021年电子计算机及其部件行业营销部门表格模板汇总.docx...
- 苹果智能拨号软件_iPhone智能性升级 多功能通话辅助软件
- 哈希表实现电话号码查找系统
- 《算法刷题LeetCode(中文版)》
- AMD HD7850 4G显卡刷Bios验真伪
- Android安全 Hook技术,Android下通过hook技术实现透明加解密保障数据安全
- 《基因突变》学习笔记
- hdu 6070 Dirt Ratio —— 二分+线段树
- 《财富》推荐的75部必看书籍
- org.springframework.core.styler包解读
- 玻璃材料封接工艺技术介绍-电连接器封装形式
- Tracking-Learning-Detection原理分析
热门文章
- 饶少阳:运营商急需网络大数据能力
- splinter iframe
- biee for mysql_BIEE11GRpd合并
- idea中同一project下创建多个module
- oracle高效率insert写法
- DC get-license
- 注册公司资本需要验资吗
- 计算机一级难还是二级难 有什么区别
- SDNU_ACM_ICPC_2020_Winter_Practice_3rd
- 计算机出现调试管理器,电脑出现实时调试怎么回事?电脑出现实时调试如何解决...