求n的阶乘及1~n的阶乘之和

一、递归求阶乘

  1. 首先了解递归的概念
    递归:程序调用自身的编程技巧称为递归( recursion)。说白了就是一个函数自己调用自己,这种方法就是递归。

>>1.递归分析

2·分析
1.(<0)负数没有阶乘
2.(=0)0的阶乘是0
3.(>0) n! = n * (n-1) * (n-2) * ···* 2 * 1

>>2.代码如下

#include <stdio.h>int factorial(int n);//初始,声明函数int main()
{int n;printf("请输入一个整数:");scanf_s("%d", &n);//输入一任意一个整数if (n < 0){printf("ERROR");//如果n为负数,则输出错误(ERROR)}if (n == 0){printf("0的阶乘是:1\n");//如果n为0,则输出0的阶乘是1}printf("%d的阶乘是:%d\n", n, factorial(n));//调用递归函数,求n的阶乘printf("1到%d的阶乘和是:%d\n", n, sum_factorial(n));return 0;
}//递归函数factorial(int n)
int factorial(int n)
{if (n == 1){return 1;//如果n等于1,返回值为1(由主函数,此时n大于0)}else{return n * factorial(n - 1);//函数内部调用自身,factorial(n)}
}//求阶乘和
int sum_factorial(int n)
{int i;int sum = 0;//初始化总和等于0for (i =1; i <= n; i++){sum += factorial(i);}return sum;
}

递归函数,直接调用

//递归函数factorial(int n)
int factorial(int n)
{if (n == 1){return 1;//如果n等于1,返回值为1(由主函数,此时n大于0)}else{return n * factorial(n - 1);//函数内部调用自身,factorial(n)}
}
//求阶乘和
int sum_factorial(int n)
{int i;int sum = 0;//初始化总和等于0for (i =1; i <= n; i++){sum += factorial(i);}return sum;
}

递归调用的缺点,占用空间内存较大。运算所需开辟空间大,不适合较大数目的递归运算

运行结果

>>3.递归调用的实现:

例如 : 求5的阶乘.
从主函数进入factorial(n)函数

 factorial(5) = 5 * factorial(4)factorial(4) = 4 * factorial(3)factorial(3) = 5 * factorial(2)factorial(2) = 5 * factorial(1)factorial(1) = 1factorial(1) = 1的值依次回带入factorial(2),factorial(3),factorial(4) 得到 factorial(5) = 5 * 4 * 3 * 2 * 1 = 120

二、普通方法求阶乘

代码块入下

#include<stdio.h>
int main()
{int i, num;int sum = 1;//定义阶乘数printf("Please input a number:\n");//输入求阶乘数numscanf("%d", &num);for (i = 1; i <= num; i++){sum *= i;}printf("%d的阶乘是:%d\n", num, sum);return 0;
}

运行结果:

求阶乘和

#include<stdio.h>
int main()
{int i, j,fac,num;int sum = 0;//定义阶乘数printf("Please input a number:\n");//输入求阶乘数numscanf("%d", &num);for (i = 1; i <= num; i++)//外层控制,求几个阶乘{fac = 1;//初始化数据,每一次求阶乘从1开始乘for (j = 1; j <= i; j++)//内层控制,求几的阶乘(i等于几即求谁的阶乘){fac *= j;//求阶乘}sum += fac;//求阶乘和}printf("1到%d的阶乘和是:%d\n", num, sum);return 0;
}

运行结果:

Python

def fac(n):if(n==1):return 1else:return n*fac(n-1)n = eval(input("请输入一个正整数:"))
print("{}的阶乘是:{}".format(n,fac(n)))sum = 0
for i in range(1,n+1):sum += fac(i)print("1到{}的阶乘和是:{}".format(n,sum))

运行结果

![在这里插入图片描述](https://img-blog.csdnimg.cn/ed52b4044b4e4e5882b322dd3f385165.png

求n的阶乘及1~n的阶乘之和相关推荐

  1. matlab 求n 的和,MATLAB求1的阶乘加到n的阶乘和 不要现有的函数,要自己编写出来的...

    点击查看MATLAB求1的阶乘加到n的阶乘和 不要现有的函数,要自己编写出来的具体信息 答:myfactorial = @(n) factorial(n) myfactorial = @(n) pro ...

  2. C++求阶乘四种方法,阶乘和,高精度阶乘

    目录 前言 一.阶乘和是什么? 二.题目 三.对错代码对比 1.错误代码 2.正确代码 四,拓展(以下均多组输入) 1,简单阶乘(int递归) 2,阶乘改进1(long long递归) 3,阶乘改进2 ...

  3. 求n的阶乘的算法框图_阶乘也很有趣:从阶乘到伽玛函数到非整数的阶乘

    阶乘运算(Factorial) 任何大于等于1 的自然数n 阶乘: 也即 下表给出了一些自然数的阶乘值: https://en.wikipedia.org/wiki/Factorial 100!是一个 ...

  4. python1~10阶乘_小练习 python3 阶乘运算

    def jiecheng(n): if (n == 0):#处理n为0的情况 print("0的阶乘是:",end='') return 0 s=1 #结果存在S,初始化为1 pr ...

  5. C++和C语言求解一个数的阶乘以及多个数的阶乘之和

    第一个问题,求解一个数的阶乘,一个数的阶乘等于从它本身一直乘到1. 以下为源代码: 第二个问题:求多个数的阶乘之和,通过上面的代码,我们已经会求解一个数的阶乘,那么多个数的阶乘我们只需要再加一个循环, ...

  6. 双阶乘C语言,c阶乘公式(排列组合与阶乘)

    C的计算:下标的数字乘以上标的数字的个数,且每个数字都要-1.再除以上标的阶乘.如:C5 3(下标是5,上标是3)=(5X4X3)/3X2X1. 3X2X1(也就是3的阶乘) A. 公式:n!=n*( ...

  7. c语言中n的阶乘的流程图,n的阶乘流程图(计算机n的阶乘流程图)

    n的阶乘流程图(计算机n的阶乘流程图) 2020-05-24 15:32:32 共10个回答 第一步:让s=1,i=1第二步输入要算的阶乘的对应的正整数n第三步让s=s*i,i=i+1第四步判断i是否 ...

  8. c语言计算阶乘的倒数和,for循环计算某个数的阶乘、阶乘和及其倒数的阶乘和...

    //4的阶乘 int jc = 4; //定义一个变量用来代表要计算的数值 long jd =1; //定义最终输出的阶乘 for(int i = 1; i <= jc;i++) //定义循环加 ...

  9. 阶乘分之一和java_n的阶乘比上(n+1)的阶乘等于多少-n的阶乘-数学-糜朔德同学

    概述:本道作业题是糜朔德同学的课后练习,分享的知识点是n的阶乘,指导老师为白老师,涉及到的知识点涵盖:n的阶乘比上(n+1)的阶乘等于多少-n的阶乘-数学,下面是糜朔德作业题的详细. 题目:n的阶乘比 ...

最新文章

  1. 2022-2028年中国文化旅游业投资分析及前景预测报告(上中下卷)
  2. oracle元数据存储在表空间,[Oracle] dbms_metadata.get_ddl 的使用方法总结
  3. java方法重载和重载方法_Java 8的方法参考进一步限制了重载
  4. 【2013.4.6】微软暑期实习生答案(zz)
  5. luogu P1046 陶陶摘苹果
  6. 计算机专业刚毕业本科生,计算机专业应届本科毕业生自我鉴定
  7. 聊聊rocketmq的ConsumerIdsChangeListener
  8. Eclipse安装UML 插件
  9. Android 递归删除文件和文件夹
  10. apache下虚拟域名配置
  11. CodeForces - 982C Cut 'em all!
  12. poj 2231 Moo Volume 暴力一定超时啊
  13. 关于SESSION如何产生,由谁产生,保存位置的记录
  14. 机器人动力学建模之牛顿欧拉法推导
  15. 用geoda软件进行空间自相关分析示例
  16. 航空插头的环境性能科普
  17. 2021年笔迹鉴定收费?江西南昌收费标准是什么?
  18. 汤唯:在街头卖艺的那些日子
  19. 相关性扫描匹配CSM与分支限界
  20. 世界上什么人最重要?什么事最重要?什么时间最重要?

热门文章

  1. 利用python-docx设置简单的word文档模板
  2. Visual Studio2022安装教程
  3. 【anaconda创建虚拟环境】
  4. 文本框”输入关键字 “提示
  5. 可擦玻璃平顶的机器人_擦玻璃机器人的优点和缺点各是什么?智能擦窗机真的好用吗?有人工擦的干净吗...
  6. 嵌入式Linux工程师发展前景 嵌入式工程师待遇怎样?
  7. web前端面试(一)
  8. 卡方检验的基本原理详解
  9. 中国计算机大会2017观展总结
  10. 212实验室日记04