递归函数实例讲解(下)

简介: 递归函数实例讲解(下)

实例二:使用递归实现strlen()函数的功能

与前面一题类似,我们得先将大型复杂的问题转化为与原问题相似规模较小问题

比如我们需要求得字符串为"abc",


1. int main()
2. {
3.  char arr[] = "abc";
4.  int len = my_strlen(arr);
5.  printf("%d\n", len);
6.  return 0;
7. }


 此时我们得明确在arr[]中abc存储为abc/0

这时候我们只需要按个从第一位进行判断,若为"/0",结束判断,不为则加一,最终判断结束输出即可;我们不难看出里面存在重复的判断和以为,以及加一,那我们便可以尝试进行实现,代码如下


1. int my_strlen(char* s)
2. {
3. if (*s == '\0')//约束条件
4.    return 0;
5.  else
6.    return 1 + my_strlen(s + 1);//(s+1)为逐渐靠近约束条件,逐渐向后进行判断
7. }


这里由于博主画图能力不足,依旧借用大牛的图给大家讲解一下递归如何实现



红色线为递推过程,蓝色线为回归过程。递推过程时会不断向约束条件靠近,当满足约束条件时,便会return 0;从而实现回归过程

实例三:用递归实现求斐波那契(不考虑溢出)

首先我们的了解什么是斐波那契数,先给大家看一些斐波那契数

1 1 2 3 5 8 13....... .... ...

除最开始两个数,后面的数是前两的和。

如果需要我们求第n个斐波那契额数,我们就只需要知道n-1和n-2,知道n-1只需知道n-2和n-3,知道n-2只需知道n-3和n-4...... ......;


 


依次类推我们不难发现其中存在了大量的重复计算,那我们便可以尝试用递归思想进行解决。

我们发现要求一个数就得知道它前两个数,如果这个数太大,就像一棵倒着得数,程2得n次方增长,所以不考虑溢出,


1. 
2. int Fib(int n)
3. {
4.  if (n <= 2)//约束条件,满足条件是结束递推,开始回归
5.    return 1;
6.  else
7.    return Fib(n - 1) + Fib(n - 2);//逐渐向约束条件靠近
8. }


以上就是博主对实例的讲解,若有不对或者有问题的宝宝可以在评论区留言或者私信博主

相关文章
|
3月前
|
人工智能 自然语言处理 搜索推荐
从扣子空间看 AI 智能体:与豆包、Kimi 较量及未来走向
本文探讨了当前 AI 智能体的发展现状、功能特点及其与传统 AI 大模型的差异,分析了其使用门槛与未来发展趋势,展望了其在多领域应用的潜力与挑战。
718 0
|
11月前
|
安全 网络架构
如何理解子网掩码:概念、功能与应用
如何理解子网掩码:概念、功能与应用
2004 2
|
数据可视化 Python
pyqt5环境配置及helloworld程序
本文主要说明在win10笔记本上的安装pyqt5软件包和环境配置,以及运行helloworld程序,以图文方式详细说明安装步骤,供大家参考。
453 1
|
运维 安全 Ubuntu
2023年最强手机远程控制横测:ToDesk、向日葵、Airdroid三款APP免Root版本
而随着移动设备和智能手机的普及,灵活轻便的手机平板上控制电脑也成为了一种趋势,我们需要一种更加高效、轻便的方式去开展远程协作和工作,因此我们需要一款强大的手机远程控制软件。本次横测我们选择了 ToDesk、向日葵和 AirDroid 这三款 APP 作为测试对象,它们都是知名度较高的远程控制软件,且均支持免 Root 版本。下面我们将对这三款软件进行详细的测试并给出使用心得。
9552 0
2023年最强手机远程控制横测:ToDesk、向日葵、Airdroid三款APP免Root版本
|
Java API Android开发
【Deprecated】「Gradle」| 手把手自定义 Gradle 插件 | 七日打卡
【Deprecated】「Gradle」| 手把手自定义 Gradle 插件 | 七日打卡
409 0
【Deprecated】「Gradle」| 手把手自定义 Gradle 插件 | 七日打卡
|
Java
Springboot配置全局跨域未生效,接口访问报错解决方法
Springboot配置全局跨域未生效,接口访问报错解决方法
1565 0
|
IDE 开发工具
WRF安装运行过程中遇到的问题总结
安装和运行WRF时遇到的一些问题,进行汇总,后续根据实际情况可能会进行补充
|
JavaScript 测试技术 Docker
《第一本Docker书(修订版)》——2.5 在Windows中安装Docker Toolbox
如果使用的是Microsoft Windows系统,也可以使用Docker Toolbox工具快速上手Docker。Docker Toolbox是一个Docker组件的集合,还包括一个极小的虚拟机,在Windows宿主机上安装了一个支持命令行工具,并提供了一个Docker环境。
2517 0
|
7天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾