当前位置: 首页 > news >正文

C语言学习笔记20260520之递归与迭代

一.递归核心三要素

递归是编程中非常经典的思想,核心是函数自己调用自己,把大问题拆成相同结构的小问题,直到无法再拆分(终止条件)。
写递归前,必须先想清楚这三点:
1.函数的作用:这个递归函数是干嘛的?输入是什么?输出是什么?
2. 终止条件(出口):什么时候不再递归?没有它会无限调用,导致栈溢出崩溃。
3. 递推公式(核心逻辑):怎么把大问题拆成更小的子问题?子问题和原问题的关系是什么?

二.递归两个必要条件

1.存在限制条件,当满足这个限制条件的时候,递归便不再继续。
2.每次递归调用之后越来越接近这个限制条件。

三.3个递归例子代码

#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>// 递归拆分正整数的每一位voidprintPos(intn){if(n>9){printPos(n/10);}printf("%d ",n%10);}////print(123)//→ 123 > 9 → print(12)//→12 > 9 → print(1)//→1 < 9 → 输出 1 % 10 → 1// → 回到 print(12) → 输出 12 % 10 → 2// → 回到 print(123) → 输出 123 % 10 →3// 包装函数:处理正负voidprint(intn){if(n<0){printf("- ");// 输出负号n=-n;// 转为正数}elseif(n==0){printf("0");// 0单独处理return;//遇到return,直接跳出函数,比break更直接,更彻底。}printPos(n);}//求字符串的长度intStrlen(constchar*str)//const 表示不会修改字符串{// 防止空指针,增强鲁棒性if(str==NULL)return0;// 递归结束:到字符串末尾if(*str=='\0')return0;// 递归计数return1+Strlen(str+1);}//递归执行过程//Strlen("abcdef")//= 1 + Strlen("bcdef")//= 1 + 1 + Strlen("cdef")//= 1 + 1 + 1 + Strlen("def")//= 1 + 1 + 1 + 1 + Strlen("ef")//= 1 + 1 + 1 + 1 + 1 + Strlen("f")//= 1 + 1 + 1 + 1 + 1 + 1 + Strlen("")//= 1 + 1 + 1 + 1 + 1 + 1 + 0//= 6//求整数 n 的阶乘//功能:输入 n,输出 n!= n ×(n - 1) × ... × 1//负数返回-1,0和1返回1,其他数使用递归longlongfactorial(intn)//long long 类型,最大只能计算 20!{if(n<0){printf("错误:负数不能求阶乘\n");return-1;}elseif(n<=1){return1;}elseif(n>20){printf("错误:不能计算20以上的阶乘\n");return-1;}else{returnn*factorial(n-1);}}intmain(){intnum=0;printf("请输入一个整数:\n");scanf("%d",&num);printf("\n%d拆分为:",num);print(num);char*p="abcdef";intlen=Strlen(p);printf("\n");printf("\n* p的字符串长度 = %d\n",len);printf("\n");intn=0;printf("请输入一个小于等于20的整数:\n");scanf("%d",&n);longlongret=factorial(n);if(ret!=-1){printf("%d 的阶乘 = %lld\n",n,ret);}return0;}

四.测试结果

http://www.jsqmd.com/news/854888/

相关文章:

  • Excel里用RANDBETWEEN和DEC2HEX造UUID?小心这3个坑!
  • 2026实验室超声波清洗机:医用超声波清洗机/单槽超声波清洗机/双槽超声波清洗机/吻合器超声波焊接机/塑料超声波焊接机/选择指南 - 优质品牌商家
  • VirtualBox虚拟机里Win10远程桌面黑屏?手把手教你改组策略搞定它
  • 让Cadence Virtuoso界面更顺眼:手把手教你定制display.drf显示规则(从原理图到波形图)
  • 1987年5月10日下午13-15点出生性格、运势和命运
  • 【26年7月】日语N1、N2、N3、N4、N5历年真题及答案PDF电子版(2010-2025年12月)
  • 自驱动关节臂坐标测量机精度提升理论与技术【附程序】
  • ChipDNA PUF技术:从晶体管失配到硬件安全密钥的工程实践
  • c# 简单记录一下我学习的过程 2026.5.20
  • Int J Surg华中科技大学同济医学院附属协和医院:可解释机器学习模型预测胰腺癌早期复发:整合瘤内瘤周影像组学及身体成分分析
  • 2026年HR SaaS选型实测:用友领跑,多场景适配全规模企业!
  • 2026.05 视觉巅峰对决:ImageNet 图像分类 SOTA 模型终极盘点
  • 两个IO口,四根线!51单片机IIC控制LCD1602的究极偷懒方案!!!
  • 避坑指南:在ArcGIS中提取DEM高程点,为什么导入Global Mapper后看不到高度?
  • 【2026年】中考初中语文必背古诗词与文言文PDF电子版(含默写练习题)
  • 告别部署焦虑:用FastDeploy在国产昇腾NPU上跑通PP-OCRv3文字识别(附完整代码)
  • 不止是部署:ZStack快速安装后的初始化配置与第一个业务网络创建全流程
  • 过了查重还要查AI?2026 AIGC检测原理+AI率降到20%全攻略
  • 别再手动画流程图了!Flowable UI 6.6.0 + Tomcat 保姆级部署教程,从安装到登录一次搞定
  • Perplexity数学推理准确率暴跌?紧急预警:2024年Q2模型更新后3类关键公式解析已失效,速查修复方案
  • RK3399 Linux内核深度调试:CodeViser实战与多核问题排查
  • Spring Boot项目整合腾讯云COS,手把手教你实现文件上传功能(附完整工具类代码)
  • 深入 MQTT:从初学者到行业专家的全栈指南
  • 集成学习知识点讲解
  • 从游戏特效到场景交互:解锁UE材质中Dot/Cross/Normalize节点的3个实战应用
  • 查重vs查AI完整对比,2026 AIGC检测原理+AI率降到20%教程
  • 2026GEO 优化核心技术解析:大数据分析、网络信息安全与智能算法研发深度测评
  • 1987年5月10日傍晚17-19点出生性格、运势和命运
  • 大模型如何推理:从分词到答案一秒之内的旅程
  • Pandas CSV:数据处理与分析的利器