C语言——用递归函数计算n!

这篇具有很好参考价值的文章主要介绍了C语言——用递归函数计算n!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

c语言用递归法求n!,C语言程序设计技术,数据结构

归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝
      比别人多一点努力,你就会多一份成绩!

c语言用递归法求n!,C语言程序设计技术,数据结构

引言:

        阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号,是数学术语。

        一个正整数的阶乘factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。

        亦即n!=1×2×3×...×(n-1)×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。

一、题目:

        用递归函数计算n!

二、 所需知识:(函数递归)

        C 语言允许函数直接或间接地调用它自身,这种调用形式称为递归调用。含有递归调用的函数称为递归函数。若函数在函数体内直接调用函数自身,称为直接递归。若某函数调用其他函数,而其他函数又调用了本函数,这一过程称为间接递归

        递归法是利用一个问题与其子问题的递推关系来解决问题,通常把一个问题层层转化为一不与原问题相同或相似的但规模较小的子问题来求解。
        递归在解决某些问题时,是一个十分有用的方法,它可以使某些看起来不容易解决的问题变得容易解决,写出的程序也比较简洁。但是递归通常要花较多的机器时间和占用较多的存储空间。
如果一个问题可以用递归的方法解决,则这个问题必须满足以下两个条件:

        (1) 该问题能分解为若干个子问题,子问题与原问题相同或相似但规模较小
        (2) 该问题的子问题存在最简形式,即递归的边界

        每调用一次函数,都要给函数的形参变量和函数内部的局部变量分配新的存储单元,同时,函数代码以新变量重新开始执行。当递归调用返回时,本次的形参变量和函数内部变量的内存单元释放,并返回到函数上次调用处。虽然递归程序构造比较简单,但是由于递归程序需要使用大量的存储空间,因此它的执行效率较低。 

三、代码实现:

#include<stdio.h>
long factorial(int);//声明函数factorial() 
int main(){
	int n;
	long y;
	printf("Input a integer number:");
	scanf("%d",&n);
	y=factorial(n);//调用函数factorial() 
	printf("%d!=%ld",n,y);
} 
long factorial(int n){//定义函数factorial(),采用递归方法实现 
	if(n==0||n==1) return 1;
	else return factorial(n-1)*n;//factorial()函数体中又调用factorial()函数本身 
}

四、运行结果: 

c语言用递归法求n!,C语言程序设计技术,数据结构

六、总结 :

        递归可以看成两个过程,一是回缩,而是递推,回缩是递归的前半程,递推是递归的后半程。

        只要调用,就要分配不同的空间

        最后,希望本篇文章对你有所帮助,也希望可以支持支持博主,后续博主也会定期更新学习记录,记录学习过程中的点点滴滴。若这篇文章中有哪些不正确的内容,欢迎大家在评论区和我交流讨论!文章来源地址https://www.toymoban.com/news/detail-775578.html

到了这里,关于C语言——用递归函数计算n!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PTA 浙大版《C语言程序设计(第4版)》题目集 参考答案(函数题)

    本文是 函数题 答案, 编程题 答案链接 PTA 浙大版《C语言程序设计(第4版)》题目集 参考答案(编程题) 😀😀 欢 迎 订 阅 😀😀 PTA浙大版《C语言程序设计(第4版)》题目集 详解教程

    2023年04月16日
    浏览(52)
  • 自考计算机科学与技术-Java语言程序设计(一)-04747-笔记

    --填空题 b和\\\'属于 转义字符 常量。 组合框 是一个下拉式菜单。 Integer是int数据类型的 包装类 。 OOP是指 面向对象的程序设计 。 Java程序文件的扩展名是 .java 。 表达式由 运算符  和  操作数  组成。 Java语言使用的字符集是 Unicode 。 StringBuffer类用于处理 可变字符串 。 A

    2024年04月27日
    浏览(50)
  • C语言程序设计——小学生计算机辅助教学系统

    编写一个程序,帮助小学生学习乘法。然后判断学生输入的答案对错与否,按下列任务要求以循序渐进的方式分别编写对应的程序并调试。 任务1 程序首先随机产生两个1—10之间的正整数,在屏幕上打印出问题。例如:6*7=?然后输入答案,如果输入答案正确,则显示“Right

    2024年02月10日
    浏览(48)
  • 【NCRE 二级Java语言程序设计01】全国计算机等级考试初识

    📜 本专栏主要是分享自己备考全国计算机二级Java语言程序设计所学心得体会、所搜集的资料信息。虽然有 Java 语言相关基础,但是 Java 桌面编程、Applet 小程序编程根本没学过,因为咱不是搞这个的呀,学了它们也找不到这方面工作呀。但是对于考二级 Java 的小伙伴来说是必

    2024年02月10日
    浏览(45)
  • C语言程序设计:某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3门课程的成绩,编写程序,计算每名学生的平均成绩及名次。

    题目内容: 某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3门课程的成绩,编写程序,计算每名学生的平均成绩及名次。(注:定义一个结构体类型,用结构指针作为函数参数) 输入格式: %ld %s %f %f %f 输出格式: %-9ld%-10s%-5.1f%-5.1f%-8.1f%-10.1f%-dn 输入样例:

    2024年02月02日
    浏览(47)
  • C语言——用递归函数计算n!

    归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝       比别人多一点努力,你就会多一份成绩!         阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发

    2024年02月03日
    浏览(45)
  • 【软件设计师07】程序设计语言与语言处理程序基础

    编译与解释、文法、正规式、有限自动机、表达式、传值与传址、多中程序语言特点 (逐渐降低考察比例,很少考察) 概念 文法类型 语法推导树 有限自动机 与正规式(重点) 常见问题:给一个串比如01、10、001等,看图中起点到终点能否连起来得到这样的串 正规式 是有限自

    2023年04月08日
    浏览(62)
  • 【程序设计】函数式编程

    函数式编程(Functional Programming,FP)是一种编程范式,它强调使用纯函数(Pure Function)来构建程序。这些纯函数接受输入并返回输出,不改变系统状态或在执行过程中引入副作用(Side Effects),这使得函数式编程具有可预测性、可维护性和可测试性等优点。 以下是一些函数

    2023年04月24日
    浏览(94)
  • Java语言程序设计课程设计

    Java语言程序设计课程设计 一、 java语言程序设计课程设计要求: (1)java语言课程设计软件设计要求 1.题目不做严格限定,可自行选择题目来完成。 2.模块化程序设计 3.锯齿型书写格式 4.必须上机调试通过 (2)撰写课程设计报告,内容包括: 1.课程设计题目; 2.需求分析;

    2024年02月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包