递归方法实现字符串逆序

  • 问题描述
  • 思路分析
  • 代码展示
  • 结果展示
  • 总结

问题描述

编写一个递归函数
实现:将参数字符串中的字符反向排列,不是逆序打印。
要求:不能使用C函数库中的字符串操作函数。
比如 :
char arr[] = “abcdef”;
逆序之后数组的内容变成:fedcba

思路分析

根据这个图,相信大家对这道题目的思路就清晰了。
总体来说,就是将递推分为两个部分:推进和回归。
推进:先让字符串第一个和最后一个字符对应,每次把最后一个字符赋值给第一个字符,并且把第一个字符存放到num中去,将最后一个字符赋值为 \0(目的是让下一次计算sz时,sz能够有所改变),然后string+1,进入下一次函数。直到遇到第一个\0,推进就结束了。
回归:因为每次把第一个字符都存在了num中,所以只需要把num赋值给对应位置的字符就行了,即*(string+sz-1)=num。

代码展示

下面是所有的代码:

#include<stdio.h>
//首先写一个my_strlen,计算字符串长度
int my_strlen(char* arr)
{int count = 0;while(*arr != '\0'){count++;arr++;}return count;
}
void reverse_string(char* string)
{int sz = my_strlen(string);int num = 0;if (*string != '\0'){num = *string;*string = *(string + sz - 1);*(string + sz - 1) = '\0';reverse_string(string + 1);*(string + sz - 1) = num;}
}
int main()
{char arr[] = "abcdef";reverse_string(arr);printf("%s", arr);return 0;
}

注意:题目要求不能用库函数,所以就写了一个my_strlen函数,其作用和strlen函数是一样的。

结果展示

总结

这道题昨天想了半天没有想出来,那是因为我昨天没有画出它的流程图。
今天只画了几分钟画了它的流程图,代码就呼之欲出,清晰可见!
所以递归的问题并不算很难,只要大家愿意花一些时间好好思考,多练多想,一定可以很容易做出来的!

递归方法实现字符串逆序相关推荐

  1. 字符串面试题(一)字符串逆序

    字符串逆序可以说是最经常考的题目.这是一道入门级的题目,相信80%的程序员经历过这道题.给定一个字符串s,将s中的字符顺序颠倒过来,比如s="abcd",逆序后变成s=" ...

  2. python【蓝桥杯vip练习题库】ALGO-69字符串逆序

    试题 算法训练 字符串逆序 资源限制 时间限制:1.0s 内存限制:512.0MB 输入一个字符串,长度在100以内,按相反次序输出其中的所有字符. 样例输入 tsinghua 样例输出 auhgni ...

  3. 编程笔试(解析及代码实现):国内各大银行(招商银行/浦发银行等)在线笔试常见题目(猴子吃桃/字符串逆序输出/一段话输出字的个数/单词大小转换等)及其代码实现(Java/Python/C#等)之详细攻略

    编程笔试(解析及代码实现):国内各大银行(招商银行/浦发银行等)在线笔试常见题目(猴子吃桃/字符串逆序输出/一段话输出字的个数/单词大小转换等)及其代码实现(Java/Python/C#等)之详细攻略 ...

  4. 编程笔试(解析及代码实现):字符串反转(字符串逆序输出)代码实现十多种方法对比(解析思路及其耗费时间)详细攻略

    编程笔试(解析及代码实现):字符串反转(字符串逆序输出)代码实现十多种方法对比(解析思路及其耗费时间)详细攻略 目录 字符串反转(字符串逆序输出)代码实现十多种方法对比(解析思路及其耗费时间)详细攻略 ...

  5. python字符串逆序_python之字符串逆序

    python之字符串逆序 1.贴题 题目来自PythonTip 给你一个字符串 a, 请你输出逆序之后的a. 例如:a='xydz' 则输出:zdyx 2.说明 思路基本分为两种, 一是编写循环,每次 ...

  6. 字符串逆序的几种方法

    普通逆序 char* Reverse(char* s) {//将q指向字符串最后一个字符char* q = s ;while( *q++ ) ;q -= 2 ; //分配空间,存储逆序后的字符串.ch ...

  7. 题库练习7(最小公倍数、求立方根、字符串逆序、记负均正、字符串分割)

    1. 求最小公倍数 import java.util.*;public class Main{public static void main(String[] args){Scanner sc=new ...

  8. 测验8.2 指针与字符串 6-1 函数实现字符串逆序

    本题要求实现一个字符串逆序的简单函数. 函数接口定义: void f( char *p ); 函数f对p指向的字符串进行逆序操作.要求函数f中不能定义任何数组,不能调用任何字符串处理函数. 裁判测试程 ...

  9. c语言指针字符串逆序存放,C语言指针实现字符串的反转

    题目要求: 编写程序:从键盘任意输入一个字符串,输出该字符串. 然后,将该字符串逆序存放后再输出,要求用字符指针完成. 代码: //解法一 #include #include int main() { ...

最新文章

  1. C#编码简单性之语义篇(如何编写简短的C#代码,随时更新)
  2. Deepin系统更新apt-get源
  3. LeetCode 146. LRU缓存机制(哈希链表)
  4. request获取各种路径记录
  5. JavaScript 代码简洁之道
  6. 【015】基于51单片机的LCD1602流动字符串proteus仿真设计
  7. VisualStudio各版本的安装与使用(持续更新)
  8. Python实现B站MP4格式音频与视频的合并!超详细的教程!
  9. [转] Redefining the shading languages ecosystem with SPIR-V
  10. 查看手机的mac地址
  11. cad编辑节点快捷键是什么_CAD常用的快捷键命令
  12. Android中实现简单的仿京东详情页面
  13. 口令登陆创新的一些想法
  14. comsol学习笔记之求解器不收敛
  15. 兄弟姐妹们,有没有啥开源的项目能加一下我吗?
  16. IceSSL插件配置
  17. AD RMS服务器部署(一)RMS安装
  18. 太阳动态VPS代理IP保证爬虫程序稳定运行
  19. 给创维电视装鸿蒙,创维电视怎么安装第三方应用?这个方法轻松教你搞定
  20. DSS代码解读-main(十一)

热门文章

  1. git命令详解( 五 )
  2. 攻防世界unseping
  3. redis配置类+redis工具类
  4. 【亲测可访问】外网如何访问局域网本地搭建的服务器
  5. STM32实例源码剖析(基于51单片机的摇摇棒制作)
  6. Typora——好用极简免费的跨平台Markdown编辑器
  7. 吃透Java基础一:Java访问权限修饰符
  8. 淘宝拍立淘,图像以图搜图接口,最新更新。
  9. java递归函数的解析
  10. QT 录制鼠标键盘回放