【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序打印字符串 | 递归要素 | 递归停止条件 | 递归操作 )
文章目录
- 一、借助 递归函数操作 逆序打印字符串
- 二、完整代码示例
一、借助 递归函数操作 逆序打印字符串
递归需要掌握下面 222 个点 :
参数入栈模型 :
- 第 111 次 , “sdh” 字符串入栈 ;
- 第 222 次 , “dh” 字符串入栈 ;
- 第 333 次 , “h” 字符串入栈 ;
- 第 444 次 , “\0” 字符串入栈 ;
函数调用模型 :
递归函数 需要有 递归停止条件 和 递归操作 222 个要素 ;
递归停止条件 : 遍历字符串直到遍历到字符串结尾处 ;
// 递归停止条件if(*str == '\0'){return;}
递归操作 : 每次递归 , 字符串中的指针向后移动一位 , 直到字符串移动到最后一位 \0
位置 ;
// 递归操作// 该递归操作会逐步 将 字符串 从开始位置 入栈// 直到递归到 '\0' 位置时 , 才开始出栈// 此处是递归点// 递归操作执行到这里 , 开始一直递归// 递归结束后 , 依次执行下面的代码str_inverse(str + 1);
二、完整代码示例
完整代码示例 :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>/** 通过递归方式 , 逆向遍历字符串* 将 递归遍历 结果存入 全局变量中* 递归指针 作 函数参数*/
void str_inverse(char *str)
{// 验证函数形参指针合法性if(str == NULL){return;}// 递归停止条件if(*str == '\0'){return;}// 递归操作// 该递归操作会逐步 将 字符串 从开始位置 入栈// 直到递归到 '\0' 位置时 , 才开始出栈// 此处是递归点// 递归操作执行到这里 , 开始一直递归// 递归结束后 , 依次执行下面的代码str_inverse(str + 1);// 打印出栈的字符// 注意 : 该打印操作是 递归停止条件达成后// 逐个出栈打印printf("*str = %c\n", *str);
}int main()
{// 存在如下字符串, 求下面字符串 "abc" 出现次数char *str = "sdh";// 字符串翻转str_inverse(str);// 命令行不要退出system("pause");return 0;
}
执行结果 :
*str = h
*str = d
*str = s
请按任意键继续. . .
【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序打印字符串 | 递归要素 | 递归停止条件 | 递归操作 )相关推荐
- 【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | 引入线程安全概念 )
文章目录 一.引入线程安全概念 二.完整代码示例 一.引入线程安全概念 在上一篇博客 [C 语言]字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | strncat 函数 ) ...
- 【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | strncat 函数 )
文章目录 一.strncat 字符串连接函数 二.借助 递归函数操作 逆序字符串操作 三.完整代码示例 一.strncat 字符串连接函数 strncat 函数 : 将 const char *src ...
- [C语言指针练习二]字符串逆序,使用指针,写一个函数,可以逆序字符串的内容。
指针练习题2 题目:字符串逆序 内容与要求:使用指针,写一个函数,可以逆序一个字符串的内容. 举例: 输入: I Love You. 输出: .uoY evoL I 输入: abc 输出: cba ...
- 逆序字符串 和 字符串的逆序输出 的区别~
今天我们讲解字符串的逆序和逆序输出,并且通过一个综合题型来加深印象和练手! 超佳出品 文章目录 前言 一.逆序字符串,字符串的逆序输出是什么? 二.实例讲解 1.字符串的逆序输出 2.逆序字符串 总结 ...
- 利用函数“逆序字符串”的三种解法
文章目录 方法一:使用数组下标的方法进行字符串的逆序 方法二:使用数组地址的方式逆序字符串 方法三:直接传数组首位元素地址进行逆序 写一个函数,可以逆序一个字符串的内容 方法一:使用数组下标的方法进行 ...
- python12345输出54321_C语言编写程序 :输入一个正整数,将其逆序输出。例如,输入12345,输出54321. 跪求大神用循环语句...
点击查看C语言编写程序 :输入一个正整数,将其逆序输出.例如,输入12345,输出54321. 跪求大神用循环语句具体信息 答:#include int main() { int num; scanf ...
- c语言智力题 操作符详解例题 数据存储 指针初阶 水仙花数 杨辉三角 逆序字符串 喝汽水问题 打印图形 猜凶手 使用指针打印数组内容 调整奇数偶数顺序 运动员猜名次
[题目名称] 下面代码的结果是:a #include <stdio.h> int i; int main() {i--; //sizeof'的返回值是无符号整型if (i > siz ...
- C语言逆序字符串(递归实现)
算法思想 以字符串"abcdef"为例 1.将a保存到temp中 2.将f放到a的位置 3.f处填写'\0' 4.计算bcde的长度 5.如果bcde的长度大于1,则逆序 6.将a ...
- 每天一道LeetCode-----以单词为单位逆序字符串,每个单词之间以一个空格分隔(原字符串中可能有多个空格)
Reverse Words in a String 原题链接Reverse Words in a String 将字符串以单词为单位逆序,每个单词之间以一个空格间隔(原字符串中可能有多个空格) 逆序的 ...
最新文章
- intellij idea 常见遇到的问题整理
- 我现在的vimrc配置文件
- 组态王浏览器java_1工程浏览器是组态王的集成开发环境在这里可以
- Angular和SAP C4C的事件处理队列
- 2.18 Logistic 损失函数的解释-深度学习-Stanford吴恩达教授
- 前端学习(2767):下拉刷新的学习
- Python3 学习系列 丨 博客目录索引
- 钉钉关键字回复功能_在家办公首日:钉钉、企业微信集体“崩溃”,只能选择 QQ、微信...
- java了解异常_ID检测_Java入门第三季7-1简易扑克牌游戏(自定义玩家个数,玩家个数和ID异常检测)...
- oracle 的跨天查询,考勤跨天如何统计 - Oracle开发 - ITPUB论坛-中国专业的IT技术社区...
- java编码问题详解
- java 分词词频_利用word分词来对文本进行词频统计
- html5 input选择文件,input文件选择,限定文件类型。
- c语言如何限制数字大小下线,C语言学习Day19
- 5.26. sysvmsg
- 如何选取适合自己的三维扫描仪
- Unity 5.x 导入教学Demo
- cocos creator2.3.5休闲游戏英文版(连连看)源码H5+安卓+IOS三端源码
- 双显示器如何设置上下显示和鼠标上下进入第二屏幕?
- SELECT连表查询重复字段