用递归的方法求n!

2023-10-31

用递归的方法求n!

在写此函数之前,我们需要知道,函数递归是什么??

顾名思义:函数递归,着重在”递归“俩字,对于函数,我想大部分初始者已经不陌生,在这里笔者就不做过多的讲述!

在调用一个函数的过程中,又直接或者间接的调用该函数本身:称为函数的递归调用!

下面,笔者将用代码加分析的方法带领大家初步认识:函数的递归调用!

用递归的方法求n!;

对于数学知识,求阶乘0!=1;1!=1;2!=1*2;3!=1*2*3;4!=1*2*3*4;5!=1*2*3*4*5

但是仔细思考就会发现n!=n*(n-1)!我想这么浅显易懂的道理,读者应该都能看懂(数学在代码中占据很大地位)

因此阶乘=1(n=0,1)或者=n*(n-1)!

或不多说,下面请看笔者所写代码:

//用递归的方法求n!
#include <stdio.h>
int k=0;
long int fac(int n)
{
	long int answer;
	k++;
	//显示fac(n)函数第几次调用及参数n的值
	printf("the %d call,n=%d\n", k, n);
	if ((n == 0) || n == 1)
		return 1;
	else
		answer = n * fac(n - 1);   //多次调用fac函数
	return (answer);              //返回值
}
int main()
{
	int m;
	scanf_s("%d", &m);
	printf("the result is: %d! =%d\n", m, fac(m));
	return 0;
}

在这里,我们可以看出,计算5的阶乘需要5次调用函数fac(n);

第一次用参数值5去调用fac(n),返回值answer=5*fac(4);因为表达式中含有函数fac(4),

因此,需要用参数值为4 第二次去调用函数fac(n),此时返回值为answer=4*fac(3),.

依次类推,当最后以1为参数值调用时,返回值answer=1;

本次调用结束后返回到调用位置从而计算出fac(2)=2*fac(1)=2*1=2;

接着在返回到调用fac(2)的位置,从而计算出fac(3)=3*fac(2)=3*2=6;

接着在返回调用..........最后返回到fac(5)=120;

最后answer=120;  把结果输出!

在这个过程需要我们知道:函数的正确书写格式,函数的调用方法,if语句的f判断(0为假,非0为真);从而正确书写该代码!

至于转结果,笔者将以5!=120为列,进行运转

  在这里,每一次调用时:调用了多少次,并且调用该次数的n值,都能清晰的看出来!

在该代码中:answer = n * fac(n - 1);显得尤为重要,毕竟在该函数的递归调用中每一次的fac(n),的调用都需要.............

文章若有不规处,请读者多多指教!笔者将会:有则改之,无则加勉!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用递归的方法求n! 的相关文章

  • 软件测试|Python数据可视化神器——pyecharts教程(九)

    使用pyecharts绘制K线图进阶版 简介 K线图 Kandlestick Chart 又称蜡烛图 是一种用于可视化金融市场价格走势和交易数据的图表类型 它是股票 外汇 期货等金融市场中最常用的技术分析工具之一 可以提供关于价格变动 趋势
  • 【C++】__declspec含义

    目录 一 declspec dllexport 如果这篇文章对你有所帮助 渴望获得你的一个点赞 一 declspec dllexport declspec dllexport 是 Microsoft Visual C 编译器提供的一个扩展
  • 【gee】下载modis土地利用类型

    var china ee FeatureCollection projects assets china boundary var lc dataset ee ImageCollection MODIS 061 MCD12Q1 filter
  • qt.qpa.plugin: Could not find the Qt platform plugin “windows“ in ““

    系统环境 Win10家庭中文版 Qt 5 12 9 链接了一些64位的第三方库 程序编译完运行后出现 qt qpa plugin Could not find the Qt platform plugin windows in 弹窗如下 网
  • js中关于字符串的创建和判断类型

    文章目录 创建方法 判断类型的技巧 区分 1 typeof 2 instanceof 共点 1 Object prototype toSt
  • 华为OD机试 Java 【计算文件大小】

    题目 一个电脑文件夹系统 每个文件夹里都有一些文件和可能还有其他子文件夹 给定所有文件夹的大小和子文件夹列表 你的任务是找出某一个文件夹及其所有子文件夹里的文件总大小 输入格式 首行有两个数字 文件夹的总数M和你要查询的文件夹ID N 之后
  • 华为OD机试2024年最新题库(Java)

    我是一名软件开发培训机构老师 我的学生已经有上百人通过了华为OD机试 学生们每次考完试 会把题目拿出来一起交流分享 重要 2024年1月 5月 考的都是OD统一考试 C卷 题库已经整理好了 命中率95 以上 这个专栏使用 Java 解法 问
  • Android Navigation的四大要点你都知道吗?

    在JetPack中有一个组件是Navigation 顾名思义它是一个页面导航组件 相对于其他的第三方导航 不同的是它是专门为Fragment的页面管理所设计的 它对于单个Activity的App来说非常有用 因为以一个Activity为架构
  • AI在保护环境、应对气候变化中的作用

    对于AI生命周期数据领域的全球领导者而言 暂时搁置我们惯常的AI见解和AI生命周期数据内容产出 来认识诸如世界地球日这样的自然环境类活动日 似乎是个奇怪的事情 我们想要知道 数据是否真的会影响我们的地球环境 简而言之 是 确实如此 但作为一
  • 最新整理Java面试八股文,大厂必备神器

    在看这篇文章之前 我想我们需要先搞明白八股文是什么 明清科举考试的一种文体 也称制义 制艺 时文 八比文 八股文章就四书五经取题 内容必须用古人的语气 绝对不允许自由发挥 而句子的长短 字的繁简 声调高低等也都要相对成文 字数也有限制 八股
  • 计算机Java项目|基于SSM的篮球系列网上商城设计与实现

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 2024史上最全Java面试八股文(带全部答案)

    今天要谈的主题是关于求职 求职是在每个技术人员的生涯中都要经历多次 对于我们大部分人而言 在进入自己心仪的公司之前少不了准备工作 有一份全面细致 面试题 将帮助我们减少许多麻烦 在跳槽季来临之前 特地做这个系列的文章 一方面帮助自己巩固下基
  • 【固定翼飞行器】用于计算固定翼飞机空气动力学的紧凑涡旋格方法研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 详解toLowerCase(判断字符串相等)

    一 toLowerCase 函数简介 toLowerCase 是一个在多个编程语言中都存在的字符串方法 它的作用是将字符串中的所有大写字母转换为对应的小写字母 常用于文本处理 搜索和比较等情况 以确保字符串的一致性和非大小写敏感的操作 二
  • 【go语言】结构体数据填充生成md错误码文件

    这里使用pongo2这个模版引擎库进行md文件渲染 GitHub flosch pongo2 Django syntax like template engine for Go package main import fmt github
  • 15天学会Python深度学习,我是如何办到的?

    陆陆续续有同学向我们咨询 Python编程如何上手 深度学习怎么学习 如果有人能手把手 一对一帮帮我就好了 我们非常理解初学者的茫然和困惑 大量视频 书籍 广告干扰了大家的判断 学习Python和人工智能 成为内行人不难 为此 我们推出了
  • 【路径规划】基于改进遗传算法求解机器人栅格地图路径规划(Matlab实现实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 基于节点电价的电网对电动汽车接纳能力评估模型研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 【Linux】文件周边001之系统文件IO

    樊梓慕 个人主页 个人专栏 C语言 数据结构 蓝桥杯试题 LeetCode刷题笔记 实训项目
  • sychnorized积累

    sychnorized 1 对象锁 包括方法锁 默认锁对象为this 当前实例对象 和同步代码块锁 自己指定锁对象 2 类锁 指synchronize修饰静态的方法或指定锁对象为Class对象 3 加锁和释放锁的原理 现象 时机 内置锁th

随机推荐

  • Qt 多线程基础及线程使用方式

    文章目录 Qt 多线程操作 2 线程类QThread 3 多线程使用 方式一 4 多线程使用 方式二 5 Qt 线程池的使用 Qt 多线程操作 应用程序在某些情况下需要处理比较复杂的逻辑 如果只有一个线程去处理 就会导致窗口卡顿 无法处理用
  • 在上传文件的同时 传递参数 (ajax上传文件并传值给后台)

    之前用的ajax方法上传文件 结果这边需要对上传文件进行分类和关键字处理 话不多说直接上代码了 前端html以及js部分 fieldset legend 文件信息 legend table class table style width 1
  • kaggle Airbus Ship Detection Challenge 船舶检测实战(1):提取正样本

    报名参加了kaggle 8月的最新比赛 Airbus Ship Detection Challenge 发现有人已经开源把准确率提高到了84 怀着 知其不可而为之 的勇气 还是把这个比赛当作了kaggle比赛的首战 第一天的工作 提取正样本
  • flutter Flexible和 Expanded的区别

    Flexible 例如 如下 你定义的控件 高度是 25 但是不同的手机显示 尺寸可能报越界 这是用 Flexible 就可以自适应高度 后 也许实际效果展示高度是 SizedBox height 10 经常使用于自定于dialog 展示
  • MySQL面试题总结

    一 逻辑架构 MySQL 架构中的三层服务 第一层是服务器层 主要提供连接处理 授权认证 安全等功能 第二层实现了 MySQL 核心服务功能 包括查询解析 分析 优化 缓存以及日期和时间等内置函数 第三层是存储引擎层 负责数据的存储和提取
  • 序列自相关矩阵的计算和分析

    序列自相关矩阵的计算和分析 这几天在搞DSP的时候遇到的一些问题 略微整理了一下 在下文中 你将会看到 平稳过程究竟有什么意义 随机信号处理是怎样与固定信号分析联系起来的 自相关函数的定义 自相关矩阵的意义和计算 平稳过程 平稳过程是现代数
  • 【DeepSpeed 教程翻译】三,在 DeepSpeed 中使用 PyTorch Profiler做性能调试和Flops Profiler教程翻译

    文章目录 0x0 前言 0x1 在 DeepSpeed 中使用 PyTorch Profiler做性能调试 Profile模型训练的循环 标记任意代码范围 Profile CPU GPU的活动 Profile 内存消耗 0x2 Flops
  • 【计算机网络04】传输层之UDP

    文章目录 1 TCP和UDP的对比 2 UDP数据格式 2 1 UDP长度 Length 2 2 检验和 Checksum 3 端口 Port 1 TCP和UDP的对比 传输层有2个协议 TCP Transmission Control P
  • 分布式+集群方式部署项目(nginx)

    分布式 把不同的业务分布在不同的服务器 集群 多台服务器实现同一个业务 分布式 集群解决了 多并发 单点故障 处理效率慢 tomcat不擅长处理静态资源 它把静态资源当动态资源处理 需要采用动静分离的办法解决 Nginx Nginx是一个俄
  • 【SVN】merge 合并trunk branch代码,解决冲突

    在命令行模式下进入待merge的项目根目录 1 将指定url上的代码merge到本地当前文件夹下 dry run表示test merge E project ry trunk ees tem gt svn merge http 192 16
  • USB Composite 组合设备之耳机+多路CDC

    USB Composite 组合设备之耳机 多路CDC 效果演示 修改 修改配置 FIFO 端点地址 修改描述符 修改设备描述符 修改配置描述符 修改接口描述符 修改类的注册接口 修改初始化接口 多路CDC 耳机类 修改数据流转接口 电脑端
  • 2020研究生数学建模B题——汽油辛烷值优化——获奖论文思路分享

    B题 汽油辛烷值优化 作者序言 B题当时比赛时选的人非常多 可以说占据了近一般的参赛队伍 但是这题蕴含很多小问题 诸多选手也是叫苦连天 我们队伍利用3天的时间完成这道赛题 最终获得全国一等奖 1 3 也是全校唯一 一等奖 在此将整体思路整理
  • SAPERP软件如何修改采购订单信息记录中的净价?

    作者 Chisting 声明 本文章仅用于SAP软件的应用与学习 不代表SAP公司 注 文中所示截图来源SAP软件 相应著作权归SAP所有 在SAP系统中如果采购信息记录中的净价维护错误 是可以进行修改的 无论是SAP ERP系统还是S4
  • 各种进制的计算及原理

    滴水逆向视频学习笔记 进制运算的本质实际就是根据进制表查表所得 我们日常主要用十进制来运算 是因为我们对十进制的加法表和乘法表熟记于心 所以计算时候非常快 但我们学习计算机底层更多是使用二进制 逢2进1 八进制 逢8进1 和十六进制 所以我
  • SpringCloud 商城系统搭建之Zuul

    Spring Cloud Zuul简介 Spring Cloud Zuul路由是微服务架构的不可或缺的一部分 提供动态路由 监控 弹性 安全等的边缘服务 Zuul是Netflix出品的一个基于JVM路由和服务端的负载均衡器 前提 本文是基于
  • 计算机网络的常用命令汇总

    在使用电脑的过程中 我们经常需要检测电脑的网络状态 这时通过使用一些网络的基本命令来检测电脑的网络状态 以下 介绍几种常用的网络命令 1 ping命令 ping 命令式用来测试TCP IP 网络是否畅通或者网络连接速度的命令 其原理是根据计
  • 1.软件开发方法

    软件开发方法 文章目录 软件开发方法 1 瀑布模型 2 增量模型 3 喷泉模型 4 敏捷开发 5 DevOps开发 6 DDD领域开发 7 总结 7 总结 1 瀑布模型 瀑布模型是一种线性 顺序的软件开发方法 以阶段为基础 需求分析 设计
  • pip win上安装gpu版本 pytorch

    检查cuda版本 nvcc V 打开torch previous 版本页面 https pytorch org get started previous versions 选择合适的版本 如 pip install torch 1 13 1
  • C语言指针详解及示例代码

    C语言指针详解及示例代码 指针是C语言中一项重要的概念 它允许我们直接访问和操作内存中的数据 本文将详细介绍C语言中指针的概念 使用方法和示例代码 指针的基本概念 指针是一个变量 它存储了其他变量的内存地址 通过指针 我们可以直接访问和修改
  • 用递归的方法求n!

    用递归的方法求n 在写此函数之前 我们需要知道 函数递归是什么 顾名思义 函数递归 着重在 递归 俩字 对于函数 我想大部分初始者已经不陌生 在这里笔者就不做过多的讲述 在调用一个函数的过程中 又直接或者间接的调用该函数本身 称为函数的递归