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

C34-递归函数编码实战

一 递归函数的基本信息

  • 定义:函数内部直接调用自身的函数,需要终止条件避免无限递归.
  • 终止条件:递归出口[如if(n==0) return 1;]
  • 递推关系:将问题分解为规模更小的同类子问题[如:f(n)=n*f(n-1)]
  • 优缺点:
    • 优:代码简洁
    • 缺:递归深度过大会导致栈溢出(如n过大时),效率可能低于迭代
  • 使用建议:一般情况不建议使用递归,容易出问题;只在特定情况下使用

二 例题

我们以一个例题认识递归函数

  • 题目

image-20250510153451332

  • 代码
#include <stdio.h>//==========
//封装递归函数
//==========
int GetAge(int CurrentPersonNum)
{int age;if(CurrentPersonNum==1){age=10;}else{age=GetAge(CurrentPersonNum-1)+2;}return age;
}//==========
//主函数
//==========
int main()
{//定义变量int age;int num;//询问用户的需求puts("你想知道第几位学生的年龄呀?");scanf("%d",&num);//调用已封装的递归函数进行计算age=GetAge(num);//返回用户的需求值printf("第%d位学生的年龄是:%d",num,age);return 0;
}
  • 结果

image-20250510160218828

三 用递归法求阶乘(在这里我们先不考虑越界问题)

  • 问题:递归法求阶乘
  • 代码
#include <stdio.h>//==========
//封装递归函数
//==========
int GetCalculateResult(int num)
{int CalculateResult;if(num==1)  //这里用两个等号,表"判断"{CalculateResult=1;  //这里用一个等号,表"赋值"}else{CalculateResult=num*GetCalculateResult(num-1);}return CalculateResult;
}//==========
//主函数
//==========
int main()
{//定义变量int num;int CalculateResult;//询问用户的需求&录入数据puts("请问你想求哪个整数的阶乘?请在这里输入:");scanf("%d",&num);//调用已封装的递归函数进行计算CalculateResult=GetCalculateResult(num);//返回用户的需求值printf("%d的阶乘是:%d",num,CalculateResult);return 0;
}
  • 结果

image-20250510163316805

http://www.xdnf.cn/news/383635.html

相关文章:

  • Profinet转CanOpen协议转换网关,破解工业设备“语言障碍”
  • 前端CSS场景题篇【持续更新】
  • Pass@1、EM、LC-winrate/winrate、CSL—— 大模型评测指标
  • Linux时间同步服务
  • Java多线程(超详细版!!)
  • 智能指针:C++内存管理的现代解决方案
  • 专业级软件卸载工具:免费使用,彻底卸载无残留!
  • 【CF】Day56——Codeforces Round 940 (Div. 2) and CodeCraft-23 BCD
  • 警备,TRO风向预警,In-N-Out Burgers维权风暴来袭
  • 25.K个一组翻转链表
  • 2025年PMP 学习七 -第5章 项目范围管理 (5.4,5.5,5.6 )
  • 多线程获取VI模块的YUV数据
  • 21、DeepSeekMath论文笔记(GRPO)
  • 十七、统一建模语言 UML
  • Win11安装APK方法详解
  • Trex -用 Python生成特定的流量模式
  • C++:this指针
  • CMake 入门实践
  • 牛客练习赛138
  • 8.5 表格进阶
  • (四)毛子整洁架构(Presentation层/Authentiacation)
  • 批量修改json文件中的标签
  • 【MCAL】TC397+EB-tresos之I2c配置实战(同步、异步)
  • 2025年客运从业资格证备考单选练习题
  • Wallcraft 3.53.0 | 提供高质量动态4D壁纸,解锁高级版,无广告干扰
  • 《Python星球日记》 第50天:深度学习概述与环境搭建
  • 数据治理框架在企业中的落地:从理念到实践
  • OSPF案例
  • 完整进行一次共线性分析
  • Java代理