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

【时时三省】(C语言基础)函数的递归调用例题

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省

例题:

用递归方法求n !。

解题思路:

求n !可以用递推方法,即从1开始,乘2,再乘3……一直乘到n。这种方法容易理解,也容易实现。递推法的特点是从一个已知的事实(如1 ! = 1)出发,按一定规律推出下一个事实(如2 ! = 1 ! * 2),再从这个新的已知的事实出发,再向下推出一个新的事实( 3 ! = 3 * 2 ! )。n ! = n * ( n-1 ) !。求n !也可以用递归方法,即5 !等于4 !×5,而4 ! = 3 !×4,.,1 ! = 1。可用下面的递归公式表示:n ! = 1 ( n = 0 , 1 ) n ! = n×( n-1 ) ! ( n > 1 )。

编写程序:

运行结果:

程序分析:

请注意每次调用fac函数后,其返回值f应返回到调用fac函数处,例如,当n =2时,从函数体中可以看到“f = fac ( 1 ) * 2”再调用fac ( 1 ),返回值为1。这个1就取代了“f = fac ( 1 ) * 2”中的fac ( 1 ),从而f = 1×2 = 2。其余类似。递归终止条件为n = 0或n = 1。

注意:

程序中的变量是int型,如果用Visual C++、GCC以及多数C编译系统为int型数据分配4个字节,能表示的最大数为2 147 483 647。如果输入13,企图求13 !,是得不到预期结果的,因为求出的结果超过了int型数据的最大值。可将f,y和fac函数定义为float或double型。

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

相关文章:

  • Flask集成pyotp生成动态口令
  • DeepSeek实战:打造智能数据分析与可视化系统
  • 用 Python 实现了哪些办公自动化
  • canal高可用配置
  • Java开发之定时器学习
  • LVS -DR
  • 每日算法 -【Swift 算法】正则表达式匹配:支持 `.` 和 `*`
  • 如何设计高效的数据湖架构:存储策略、Schema 演进与数据生命周期管理
  • 基于51单片机的音乐盒汽车喇叭调音量proteus仿真
  • 基于Doc2Vec的Markdown文档分类实战:从预处理到模型评估
  • 部署swagger接口文档到云服务器
  • ZooKeeper 命令操作
  • Gin项目脚手架与标配组件
  • 网络协议DHCP
  • YOLO 系列算法的参数量
  • Java大师成长计划之第33天:应用监控与日志管理
  • 顺序表与链表专项训练:在 LeetCode 实战中深化数据结构理解
  • 力扣 秋招 打卡第一天 2025年5月28日 Java
  • Vim 中设置插入模式下输入中文
  • 考研系列-操作系统:第一章、计算机系统概述
  • freecad TechDraw工作台中虚线(隐藏线)的实现方式
  • 桥梁进行3D建模时的数据采集、存储需求及技术参数
  • 监控 Oracle Cloud 负载均衡器:使用 Applications Manager 释放最佳性能
  • android平台驱动开发(六)--Makefile和Kconfig简介
  • vue 实现鼠标放上后显示,挪开后隐藏(点击显示/隐藏)
  • 【微波遥感第一期】基本概念
  • OpenCV CUDA模块直方图计算------在 GPU 上计算图像直方图的函数calcHist()
  • 在部署了一台mysql5.7的机器上部署mysql8.0.35
  • QGraphicsView、QGraphicsScene和QGraphicsItem图形视图框架(七)修改item属性
  • Golang分布式系统开发实践指南