精华内容
下载资源
问答
  • Python阶乘求和的方法题目描述:获得用户输入的整数n,输出 1! 2! … n!的值。如果输入数值为0、负数、非数字或非整数,输出提示信息:输入有误,请输入正整数。(推荐学习:Python视频教程)方法一:#factTest1def ...

    Python阶乘求和的方法

    题目描述:

    获得用户输入的整数n,输出 1! 2! … n!的值。

    如果输入数值为0、负数、非数字或非整数,输出提示信息:输入有误,请输入正整数。

    (推荐学习:Python视频教程)

    方法一:#factTest1

    def main():

    a = input()

    sum = 0

    if a.isdigit():

    n = eval(a)

    if n > 0:

    fact = 1

    for i in range(1, n 1):

    fact *= i

    sum = fact

    print(sum)

    else:

    print("输入有误,请输入正整数")

    else:

    print("输入有误,请输入正整数")

    main()

    方法二:递归思想#factTest2

    import sys

    sys.setrecursionlimit(5000)

    def getSum(i):

    sum = 0

    if i==0:

    return 0

    else:

    for x in range(1,i 1):

    sum = fact(x)

    return sum

    def fact(m):

    if m==0:

    return 1

    else:

    return m*fact(m-1)

    def main():

    n = input()

    if n.isdigit():

    a = eval(n)

    if a>0:

    result = getSum(a)

    print(result)

    else:

    print("输入有误,请输入正整数")

    else:

    print("输入有误,请输入正整数")

    main()

    问题总结:

    当使用递归方法求1024的阶乘时,出现了一个异常:RecursionError: maximum recursion depth exceeded in comparison,超出了递归的最大深度。一些网友提到Python中默认的最大递归深度为1000,但在实际测试中,我的电脑到997的时候就出现异常了,不知道这是由什么决定的。因此,为了能够计算1024的阶乘,需要为最大递归深度赋予一个更大的值。这里可以采用以下方法:import sys

    sys.setrecursionlimit(5000) #修改为5000

    另外,也可以查看最大递归深度:import sys

    sys.getrecursionlimit() # output:1000

    展开全文
  • 需求:阶乘:也是数学里的一种术语;阶乘指从1乘以2乘以3乘以4一直乘到所要求的数;在表达阶乘时,就使用“!”来表示。如h阶乘,就表示为h!;阶乘一般很难计算,因为积都很大。提问:求1+2!+3!+...+20!的和实现环境...

    需求:

    阶乘:也是数学里的一种术语;阶乘指从1乘以2乘以3乘以4一直乘到所要求的数;在表达阶乘时,就使用“!”来表示。如h阶乘,就表示为h!;阶乘一般很难计算,因为积都很大。

    提问:求1+2!+3!+...+20!的和

    实现环境:python3

    编辑器:pycharm

    分析:1、阶乘的计算就是比较麻烦的一部分,用递归函数实现是比较好的方案,先定义一个递归函数实现求阶乘功能。

    def  recursion(n):

    '定义递归函数实现求阶乘功能'

    if n==1:

    return 1

    else:

    return  n*recursion(n-1)

    2、求和思路,可以直接求和,也可以定义一个列表将for遍历遍历得到的阶乘结果追加到列表,然后使用sum()函数求和。

    sum_0=0

    print("for循环直接调用递归函数求和".center(80,"*")) #显示效果明显

    for  i  in range(1,21):

    sum_0 +=recursion(i)

    print(sum_0)

    列表求和方案:

    list=[] #定义一个空的列表,将调用递归函数生成的阶乘值追加到列表

    print("将1-20的阶乘写入列表,使用sum函数求和".center(80,"*")) #显示效果明显

    for  i  in range(1,21):

    list.append(recursion(i))# 将调用递归函数生成的阶乘值追加到列表

    print(sum(list)) #列表求和

    两者代码行数一样多都可以实现其功能。

    使用知识点:递归函数 for循环 range()函数等。

    完整源代码以及结果:

    #/usr/bin/env python

    #_*_coding:utf-8_*_

    def  recursion(n):

    '定义递归函数实现求阶乘功能'

    if n==1:

    return 1

    else:

    return  n*recursion(n-1)

    list=[] #定义一个空的列表,将调用递归函数生成的阶乘值追加到列表

    print("将1-20的阶乘写入列表,使用sum函数求和".center(80,"*")) #显示效果明显

    for  i  in range(1,21):

    list.append(recursion(i))# 将调用递归函数生成的阶乘值追加到列表

    print(sum(list)) #列表求和

    sum_0=0

    print("for循环直接调用递归函数求和".center(80,"*")) #显示效果明显

    for  i  in range(1,21):

    sum_0 +=recursion(i)

    print(sum_0)

    结果:

    *****************************将1-20的阶乘写入列表,使用sum函数求和*****************************

    2561327494111820313

    ********************************for循环直接调用递归函数求和*********************************

    2561327494111820313

    经过验证两者都可以实现基本的功能,但是未测试更大数据量的计算。

    展开全文
  • package _4_27; import java.util.Scanner; public class _1013 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int a = 0;...

    在这里插入图片描述

    package _4_27;
    import java.util.Scanner;
    public class _1013 {
    
    	public static void main(String[] args) {
    		Scanner scan = new Scanner(System.in);
    		int n = scan.nextInt();
    		int a = 0;
    		long sum = 0L;
    		for(int i = 0; i < n; ++i) {
    			a = a * 10 + 2;
    			sum += a;
    		}
    		System.out.println(sum);
    	}
    }
    
    

    在这里插入图片描述

    
    	public static void main(String[] args) {
    		Scanner scan = new Scanner(System.in);
    		int n = scan.nextInt();
    		long sum = 0;
    		for(int i = 1; i <= n; ++i) {
    			sum += print(i);
    		}
    		System.out.println(sum);
    		
    
    	}
    	public static long print(int n) {
    		long m = 1;
    		for(int i = 1; i <= n;++i) {
    			m *= i;
    		}
    		return m;
    	}
    
    展开全文
  • 1.使用公式C=(5/9)(F-32)打印下列华氏温度与摄氏温度对照表: public class Chart{ public static void main(String args[]){ for(int f=0;f;f+=20){\\使用for循环将所有的温度 float c=(float)(5.0/9)*...

    1.使用公式C=(5/9)F-32)打印下列华氏温度与摄氏温度对照表:

    public class Chart{
    	public static void main(String args[]){
    		for(int f=0;f<=300;f+=20){  \\使用for循环将所有的温度
    			float c=(float)(5.0/9)*(f-32);
    			//System.out.print(f);
    			//System.out.print("\t");
    			System.out.printf("%d\t%1.1f\n",f,c);\\输出华氏温度和摄氏温度,中间用制表符隔开,结果保留一位小数
    			}
    		System.out.printf("\n\n\n");
    		for(int F=300;F>=0;F-=20){         \\逆序打印
    			float C=(float)(5.0/9)*(F-32);
    			System.out.printf("%d\t%1.1f\n",F,C);
    		}
    	} 
    }

     运行结果截图:

      

    题目分析:使用公式完成摄氏温度和华氏温度的转换,使用for循环依次计算并打印输出,注意输出格式,\t制表             符,%1.1f是保留小数点后一位,这里还需要进行强制类型转换。

    2.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153 是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

    public class Flowers {
    	public static void main(String[] args) {
    		int x;
    		int y;
    		int z;
    		for(int i=100;i<1000;i++){
    			 x=i%10;  //个位
    			 y=i/10%10;  //十位
    			 z=i/100;  //百位
    			 if((x*x*x+y*y*y+z*z*z)==i){
    				 System.out.println(i);//当数字符合if条件语句,则输出
    			 }
    		}
    	}
    }
    

     运行结果截图:


    题目分析:题目中最重要的是将需检验数字的个位十位百位的分别表示,表示出来之后使用条件语句if判断是否是题                     目中所求的水仙花数,若是,则输出。

    3.1+2!+3!+...+20!的和。

    public class Factorial {
    	public static void main(String[] args) {
    		int sum=0;
    		
    		for(int i=1;i<=20;i++){  //20个数字,对每一个数字进行接下来的运算
    			int F=1;
    			for(int j=1;j<=i;j++){  //对每一个数字从1开始阶乘
    				
    				F*=j;//f=f*j
    			}
    			sum+=F;// 把每一个数字的阶乘结果进行求和运算
    		}
    		System.out.println(sum);//把总和输出
    	//	int a,sum=0,s=1;
    	//	for(a=1;a<=20;a++){
    	//		s*=a;                //注释的地方是第二种办法,都可以运行结果
    	//		sum+=s;
    	//	}
    	//	System.out.print(sum);
    	}
    }
    

    运行结果截图:


    题目分析:两层循环的嵌套,第一层是所需要计算的所有数字,第二层是第一层中所有数字需要完成的阶乘计算,完成后求和并打印输出。



    展开全文
  • n的阶乘分之一求和等于e的证明?用泰勒展开式:fx=f(a)+f‘(a)/1!(x-a)+f''(a)/2!(x-a)^2+.e^x=f(0)+f'(0)*x/1!+f''(0)x^2/2!+.e=1+1/2!+1/3!+...1/为什么(n的阶乘)除以(e的x次方)(x趋向正无穷大)的极限是无穷小在X...
  • 级数求和的八个公式_级数求和

    千次阅读 2020-12-03 13:12:34
    当时我给的答案是否定的,并提供了一求和公式。其实对任意多项式 ,级数 的和可用阶乘函数 及其高阶导函数的数值表示出来,所用的基本原理只是部分分式的理论与有名的Kronecker极限式(Kronecke...
  • 莱布尼茨求导公式,即这个公式一般应用于求高阶导数,但是如果我们对其进行大胆应用,比如令 结合组合数的延伸我们得到(记 )类似的,我们记负数阶导数为对应次积分,这个公式先不考虑敛散性问题,我们令 得到我们就...
  • 1:把n!写成10^m次方的形式,如果m=2,就说明是三位数。 【维基百科】 【别处摘来的】可以将n!表示成10的次幂,即n!...即: M = log10^1+log10^2+log10^3...+log10^n 循环求和,就能算得M值 ,该M...
  • 数列算术数列几何数列二项式定理数列、级数数列f(x)得到一个数列:2,4,6,8,...... ;数列是以自然数(1,2,3,4,.....)为定义域的函数对应值构成的序列--有限序列和无限序列。序列可以用函数表示,但...阶乘序列是...
  • 递归求和

    千次阅读 2018-10-07 20:03:58
    /*用阶乘求1到100的和 思路: 递归结束条件:n=1 递归公式:n*sum(n-1)*/ #include&lt;stdio.h&gt; int Sum(int num);//函数声明 函数名最好用大写 int main(void) { int num;//1到100的和 int sum;//...
  • 计算一个数阶乘的位数

    千次阅读 2017-02-27 22:30:49
    给出一个数N,求出N!的位数。 暴力法肯定是不行的,阶乘是个增长速度 很快的函数,10!已经有7位了。更直接的方法是log10(N!...一种方法是换底公式然后求和log10(N!) = log2(1*2*3*..*N)/log2(10)
  • C语言:求1~10的阶乘之和(迭代)

    千次阅读 2019-10-20 20:46:11
    6.17C语言:求1~10的阶乘之和 #include<stdio.h> int main(){ int n; long sum=0,f=1;... //迭代公式,累乘计算n! sum+=f; //累加求和 } printf("1`10的阶乘之和为:%ld",sum)...
  • /* NYOJ69 阶乘数位长度 * 方法一: * 可设想n!的结果是不大于的M次幂的数,即n!^M(10的M次方),则不小于M的最小整数就是n!的位数,对 * 该式两边取对数,有M =log10^n! 即:M = log10^1+log10^2+log10^3.....
  • 这道题没写过类似的感觉确实不好想,考点在...qi的值和阶乘的值都可以预处理,但是你会发现如果直接带这个公式写出来就T了。这就是真的变态卡快速幂。。。。。。。。。 这是我超时的代码: #include<bits/stdc++.h.
  • 斯特林公式

    千次阅读 2010-12-12 11:14:00
    斯特林公式的推导(简单法则)2010-08-24 11:23 斯特林公式的推导(简单法则) 此处不使用瓦利斯公式以及其他阶乘定理,而仅采用最简单的微积分法则。 我们知道,对于自然数n,有n!=1×2×3×……×n...
  • 直接拆开,消一消阶乘 然后就发现了(j-k)和k! 往NTT方向靠拢 然后大功告成 其实只要想到把斯特林公式换成通项公式,考虑用NTT优化掉(j-k)^i 后面都是套路了。 #include<bits/stdc++.h> #define ...
  • #求阶乘函数 def myreduce(m): value = 1 for i in range(1,m+1): value = value*i return value #求和项的函数 def sumfun(m): div = (396**(4*m))*((myreduce(m))**4)#公式的分母部分 return (26390*m + ...
  • 利用泰勒级数sin(x)=x-x3/3!+x5/5!-x7/7!+x9/9!-… 计算sin(x)的值。要求最后一项的绝对值小于10^(-5) 这个问题在学习模块化程序...阶乘 sum1 =-(m+1)(m+2) x的次方 n=pow(x,2m-1); 间隔数列求和 sum +=n/sum1; //for
  • 本书从函数功能、函数格式、参数说明、注意事项、Excel 版本提醒、案例应用、交叉参考7 个方面,全面、细致地介绍了Excel 2016/2013/2010/2007/2003 中公式和函数的使用方法、实际应用和操作技巧。最后3 章还将公式...
  • ACM-大数N!的位数公式

    2016-06-07 21:06:28
    下面介绍两种方法直接求阶乘结果的位数: 方法一  可以将n!表示成10的次幂,即n!=10^M(10的M次方)则不小于M的最小整数就是 n!的位数,对该式两边取对数,有 M =log10^n! 即:  M = log10^1+log10^2+log10^3...+...
  • 之前的公式 public class ArraySum { public static void main(String[]args){ sum(30); System.out.print(sum(30)); } public static int fun(int x){ //实现阶乘 if(x==1){  return 1; }else{ ...
  • 化简后为p=(1+求和1~n-m ***(-1)^i/i!)/m! 注意:因为要保留8位小数,所以求阶乘是求到20时,就应该可以过了 ^-^ /* p=f[n-m]*C(n,m)/(N!) */ #include #include using namespace std; int main() { i
  • //函数功能:计算求和变量e,精度为f; double fun(double f) { double e=1.0; double jc=1;//求阶乘,并存入jc中 /**********Program**********/ int i = 1;//用于循环和递归增加 while(1/jc >= f){ e = e...
  • 本书综叙了数值分析领域的诸多内容,包括配置多项式、有限差分、阶乘多项式、求和法、牛顿公式、算子与配置多项式等等

空空如也

空空如也

1 2 3
收藏数 58
精华内容 23
关键字:

阶乘求和公式