进阶版求字符串长度

大家好呀!!!我是Beilef,一个努力的跨界者,今天带来的每日一题是用简单的函数还有递归求字符串长度。下面开始啦,不对的地方请留言。感谢您的斧正。

 

文章目录

  • 目录

    文章目录

    前言

    一、题目展示

     解题思路:

    递归是⼀种通过反复调⽤⾃⾝来解决问题的⽅法。在递归函数中,函数会调⽤⾃⼰,并在每次调⽤中 传⼊不同的参数,直到达到某个基准条件,然后递归结束并返回结果。递归可以让⼀些复杂的问题更 容易理解和解决。 在编写递归函数时,需要考虑以下⼏个要素: 1. 递归结束条件:递归必须有⼀个结束条件,否则会导致⽆限递归,最终导致堆栈溢出等问题。 2. 递归调⽤:在递归函数中必须调⽤⾃⾝。 3. 递归传参:递归函数每次调⽤⾃⾝时,需要传⼊不同的参数,以处理不同的情况。 本题我们可以利⽤递归解决,递归函数的实现步骤如下: 1. 递归结束条件:字符串指针指向空字符; 2. 递归调⽤:字符串的⻓度=1+后⾯⼦字符串的⻓度; 3. 递归传参:当前字符串指针后移的结果。 通过不断调⽤递归函数,我们最终可以得到字符串的⻓度。

    二、代码演示

    2.编译结果

    总结



前言

我在前面讲过基本的求字符串的长度,这里进阶版有亿丢丢不一样


提示:以下是本篇文章正文内容,下面案例可供参考

一、题目展示

题⽬描述: 写⼀个函数Strlen,可以求字符串⻓度,除了函数的形参,函数中不能使⽤多余的变量。 输⼊⼀个字符串(字符串⻓度⼩于等于30,中间不包含空格),使⽤Strlen函数可以求字符串的⻓ 度,并返回。 注:字符串的结束标志是 \0

 解题思路:

递归是⼀种通过反复调⽤⾃⾝来解决问题的⽅法。在递归函数中,函数会调⽤⾃⼰,并在每次调⽤中 传⼊不同的参数,直到达到某个基准条件,然后递归结束并返回结果。递归可以让⼀些复杂的问题更 容易理解和解决。 在编写递归函数时,需要考虑以下⼏个要素: 1. 递归结束条件:递归必须有⼀个结束条件,否则会导致⽆限递归,最终导致堆栈溢出等问题。 2. 递归调⽤:在递归函数中必须调⽤⾃⾝。 3. 递归传参:递归函数每次调⽤⾃⾝时,需要传⼊不同的参数,以处理不同的情况。 本题我们可以利⽤递归解决,递归函数的实现步骤如下: 1. 递归结束条件:字符串指针指向空字符; 2. 递归调⽤:字符串的⻓度=1+后⾯⼦字符串的⻓度; 3. 递归传参:当前字符串指针后移的结果。 通过不断调⽤递归函数,我们最终可以得到字符串的⻓度。

 

二、代码演示

#define _CRT_SECURE_NO_WARNINGS//VS中避免类似scanf出错的方法
#include <stdio.h>
char Strlen(const char * str )//
{
	if(*str=='\0')
	{
		return 0;
	}
	return 1+ Strlen(str+1) ;
}
int main()
{
	char arr[30] = { 0 };
	printf("请输入你的字符串");
	scanf("%s", arr);
	int len = Strlen(arr);
	printf("%d", len);
	return 0;
}

2.编译结果


总结

今天的题目就分享到这里了谢谢大家的观看。不对的地方请多多包含(记得在评论区留言,O(∩_∩)O)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/277444.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis行为配置之Ⅳ—日志

专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL Mybatis配置入门 Mybatis行为配置之Ⅰ—缓存 Mybatis行为配置…

HCIA-Datacom题库(自己整理分类的)——ARP协议【完】

一、单选 1.ARP 属于哪一层协议&#xff1f; 数据链路层 网络层 物理层 传输层 2.ARP请求是____发送的 点播 广播 组播 单播 关于ARP报文的说法错误的是? ARP请求报文是广播发送的 ARP报文不能被转发到其他广播域 ARP应答报文是单播方发送的 任何链路层协议都需…

java spring boot 自定义 aop

以一个锁的加锁和释放为例 1、先定义注解 /*** 锁切面* author fmj*/ Retention(RetentionPolicy.RUNTIME) Target(ElementType.METHOD) public interface VersionLockAOP { }2、然后定义切面类以及切点 /*** 切面*/ Component Aspect Slf4j public class VersionLockAOPAspe…

Jackson—Anti-Human IgE Antibodies

Jackson lmmunoResearch推出一系列适用于诊断试剂研发的Mouse Monoclonal Anti-Human IgE antibodies&#xff08;小鼠抗人IgE单克隆抗体&#xff09;&#xff0c;补充了Jackson现有的抗人lgG、IgM和lgA抗体产品&#xff0c;抗人IgE可与一系列特定的报告分子偶联&#xff08;如…

融汇贯通 —— 2023年技术与心灵的双重成长旅程

当我们站在2023年的岁末&#xff0c;回望这一年赋予我们的经历和挑战&#xff0c;心中涌动的感慨与启示像朝日初升的光芒&#xff0c;照亮脚下的路&#xff0c;亦照见心中的路。在此&#xff0c;我想分享几个方面的感悟和成长&#xff0c;愿它们能有所触动&#xff0c;成为您前…

上升到人生法则的贝叶斯理论

贝叶斯定理在数据分析、机器学习和人工智能等领域有广泛的应用。贝叶斯定理&#xff08;Bayes’ theorem&#xff09;是一种用于计算条件概率的重要定理&#xff0c;它基于条件概率的定义&#xff0c;描述了在已知某一条件下&#xff0c;另一个条件发生的概率。 需要注意的是&a…

STM32 CubeMX工具在TSL2561驱动开发中的快速集成与调试技巧

在STM32 CubeMX工具中快速集成和调试TSL2561驱动的开发技巧&#xff0c;可以大大提高开发效率和减少调试时间。下面将为您介绍如何在CubeMX中进行快速集成和调试TSL2561驱动的技巧和步骤。 1. 创建新工程和选择芯片型号 打开STM32 CubeMX工具&#xff0c;点击“New Project”…

课件如何录屏解说?解说技巧,快来围观!

随着在线教育和知识共享理念的普及&#xff0c;越来越多的老师和学生开始尝试录制课件来进行知识传播和课程讲解。课件录屏是将课件内容、讲解声音和画面融合在一起的一种方式&#xff0c;有助于观众更好地理解和掌握知识。可是课件如何录屏解说呢&#xff1f;本文将介绍两种常…

设计模式-对象池模式

设计模式专栏 模式介绍模式特点应用场景对象池模式和工厂模式的区别代码示例Java实现对象池模式Python实现对象池模式 对象池模式在spring中的应用 模式介绍 对象池模式是一种创建型设计模式&#xff0c;它将对象预先创建并初始化后放入一个池中&#xff0c;以供其他对象使用。…

关于Unity使用图片字体示例

1.使用TexturePacker打包图集 下载地址 TexturePacker - Create Sprite Sheets for your game! 2.准备好数字图 3. 导入图片 4. 打包图集需要的设置 将重心点设置为左下方 点击回车 > 后点击回 >到精灵列表 选择导出的格式 导出后的内容 >导入unity 导入 >…

Linux Debian12安装和使用ImageMagick图像处理工具 常见图片png、jpg格式转webp格式

一、ImageMagick简介 ImageMagick是一套功能强大、稳定而且免费的工具集和开发包。可以用来读、写和图像格式转换&#xff0c;可以处理超过100种图像格式&#xff0c;包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式。对图片的操作&#xff0c;即可以通过命令行进行&am…

利用全面预算管理,构建企业数智化管理体系

财务团队对于一个企业的发展来说一直承担着巨大的压力&#xff0c;特别是当今的经济世态&#xff0c;财务管理被赋予比以往任何时候更高的期望。为了提高运营效率&#xff0c;降低管理成本&#xff0c;企业朝着数智化的方向逐渐靠拢。其中&#xff0c;全面预算管理的潜在价值是…

【C++】vector 基本使用(详解)

目录 一&#xff0c;vector 的介绍 二&#xff0c;vector 的定义 1&#xff0c;vector() 2&#xff0c;vector&#xff08;size_type n, const value_type& val value_type()&#xff09; 3&#xff0c;vector (const vector& x) 4&#xff0c;vector (InputIte…

IDEA 2022.2 安装教程

1.下载2020.3版本IDEA 链接&#xff1a;https://pan.baidu.com/s/1IFK8VRjT7vM2VM75ToveGQ?pwd176m 提取码&#xff1a;176m 2.安装 下载完成后&#xff0c;双击exe安装包&#xff0c;出现IDEA安装欢迎首页&#xff1a; 3.将 ja - netfiltet 文件复制到idea安装目录附件 …

Tailwind CSS 在Html中的使用

官网地址&#xff1a;Installation - Tailwind CSS 前言 记录从0到1在原生HTML中通过Tailwind CLI 使用Tailwind CSS Tailwind CLI 第一步&#xff0c;新建一个HTML文件夹 mkdir HTML 第二步&#xff0c;安装依赖tailwindcSS npm install -D tailwindcss 第三步&#xf…

SpringSercurity踩坑之request.getRequestURI()和request.getRequestURL()

今天在开发的时候遇到一个小小的问题&#xff0c;我在swagger测试权限的时候&#xff0c;直接跳过了放开的路径&#xff0c;直接进行了角色判断&#xff0c; .addFilterBefore(new TokenAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class) 在这里if判断路径…

园林机械部件自动化三维测量检测形位公差-CASAIM自动化三维检测工作站

随着园林机械的广泛应用&#xff0c;对其机械部件的精确测量需求也日益增加。传统的测量方法不仅效率低下&#xff0c;而且精度难以保证&#xff0c;因此&#xff0c;自动化三维测量技术成为了解决这一问题的有效途径。本文将重点介绍CASAIM自动化三维检测工作站在园林机械部件…

mysql查询出json格式字段中的值

一、使用场景 由于一些特殊数据使用json格式保存到表数据种中了&#xff0c;在查询的时候需要查询出这条数据中json格式中的某个字段 比如&#xff1a;需要将下列字符串中的“nationality”字段单独查询出来 json格式是一个对象 结果&#xff1a; json格式是一个集合 查询结…

HarmonyOS云开发基础认证【题库答案】

HarmonyOS应用开发者基础认证【题库答案】 HarmonyOS应用开发者高级认证【题库答案】 一、判断题 应用架构的演进依次经历了微服务架构、单体架构、Serverless架构等阶段。&#xff08;错&#xff09;鸿蒙应用可以使用Arkts开发&#xff08;对&#xff09;认证服务在绑定微信账…