这里的n-3c语言n的阶乘乘是怎么来的?

java用三种方法实现阶乘n! -
- ITeye技术网站
博客分类:
用三种方法来实现n!实现使用BigDecimal类,因为用int最多正确算到12!,用long最多正确算到20!.实现方法都比较简单,但是转换为BigDecimal实现后可能看起来有点莫名其妙。废话不多说,直接上代码:
第一种方法:从1开始,一直递增乘到n,从而实现n!
import java.math.BigD
import java.util.S
public class Factorial1 {
public static BigDecimal factorial(int n){
BigDecimal result = new BigDecimal(1);
for(int i = 2; i &= i++){
a = new BigDecimal(i);//将i转换为BigDecimal类型
result = result.multiply(a);//不用result*a,因为BigDecimal类型没有定义*操作
public static void main(String[] arguments){
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();//读取控制台输入的整数
System.out.println(a + "!=" + factorial(a));
第二种方法:从n开始,一直递减乘到2,从而实现n!
import java.math.BigD
import java.util.S
public class Factorial3 {
public static BigDecimal factorial(BigDecimal n){
BigDecimal bd1 = new BigDecimal(1);//BigDecimal类型的1
BigDecimal bd2 = new BigDecimal(2);//BigDecimal类型的2
BigDecimal result = bd1;//结果集,初值取1
pareTo(bd1) & 0){//参数大于1,进入循环
result = result.multiply(n.multiply(n.subtract(bd1)));//实现result*(n*(n-1))
n = n.subtract(bd2);//n-2后继续
public static void main(String[] arguments){
Scanner sc = new Scanner(System.in);
BigDecimal
n = sc.nextBigDecimal();
System.out.print(n + "!=" + factorial(n));
第三种方法,用递归实现:f(n)=n*f(n-1),f(1)=1,递归相乘,从而实现n!
import java.util.S
import java.math.BigD
public class Factorial2 {
public static BigDecimal factorial(BigDecimal n){
BigDecimal bd1 = new BigDecimal(1);//1
if(n.equals(new BigDecimal(1))){
return bd1;
return n.multiply(factorial(n.subtract(bd1)));//n*f(n-1)
public static void main(String[] arguments){
Scanner sc = new Scanner(System.in);
BigDecimal a = sc.nextBigDecimal();
BigDecimal result = factorial(a);
System.out.println(a + "!=" +result);
浏览 17549
浏览: 26371 次
文章写的不错,但是感觉BigInteger还是有很多内容没有写 ...Hi~亲,欢迎来到题谷网,新用户注册7天内每天完成登录送积分一个,7天后赠积分33个,购买课程服务可抵相同金额现金哦~
意见详细错误描述:
教师讲解错误
错误详细描述:
当前位置:>>>
我们把符号“n!”读作“n的阶乘”,规定“其中n为自然数,当n≠0时,n!=n·(n-1)·(n-2)…2·1,当n=0时,0!=1”.例如:6!=6×5×4×3×2×1=720.又规定“在含有阶乘和加、减、乘、除运算时,应先计算阶乘,再乘除,后加减,有括号就先算括号里面的”.按照以上的定义和运算顺序,计算:(1)4!=________;(2);(3)(3+2)!-4!=________;(4)用具体数试验一下,看看等式(m+n)!=m!+n!是否成立?
主讲:王文芳
给视频打分
电话:010-
地址:北京市西城区新街口外大街28号B座6层601
扫一扫有惊喜!
COPYRIGHT (C)
INC. ALL RIGHTS RESERVED. 题谷教育 版权所有
京ICP备号 京公网安备如何用阶乘来表示1开始的奇数的连乘比如1*3*5*7.到N用n!类似这种形式表示.谢谢_百度作业帮
如何用阶乘来表示1开始的奇数的连乘比如1*3*5*7.到N用n!类似这种形式表示.谢谢
从1到N的所有偶数乘积可以写出Q=(1*2)*(2*2)*...*((N-1)/2 *2)=((N-1)/2)!*2^((N-1)/2)1到N的乘积为S=n!所以1到N的奇数乘积为P=S/Q=n!/(((N-1)/2)!*2^((N-1)/2))这种表示方法很繁,一般做题碰到是都直接写成π(2i-1),i从1到(N+1)/2或者干脆自己定义一个符号,如N!(48届IMO预选题中有一道这样的题)
为您推荐:
其他类似问题
(2*n-1)!n=1、2、3…
扫描下载二维码阶乘怎么算啊_百度作业帮
阶乘怎么算啊
【阶乘的概念】阶乘(factorial)是基斯顿·卡曼(Christian Kramp,1760 – 1826)于1808年发明的运算符号.阶乘,也是数学里的一种术语.[编辑本段]【阶乘的计算方法】阶乘指从1乘以2乘以3乘以4一直乘到所要求的数.例如所要求的数是4,则阶乘式是1×2×3×4,得到的积是24,24就是4的阶乘.例如所要求的数是6,则阶乘式是1×2×3×……×6,得到的积是720,720就是6的阶乘.例如所要求的数是n,则阶乘式是1×2×3×……×n,设得到的积是x,x就是n的阶乘.[编辑本段]【阶乘的表示方法】在表达阶乘时,就使用“!”来表示.如x的阶乘,就表示为x!如:n!=n×(n-1)×(n-2)×(n-3)×...×1阶乘的另一种表示方法:(2n-1)!当n=2时,3!=3×1=3当n=3时,5!=5×3×1=15当n=4时,7!=7×5×3×1=105...(以此类推)[编辑本段]【20以内的数的阶乘】以下列出0至20的阶乘:0!=1,1!=1,2!=2,3!=6,4!=24,5!=120,6!=720,7!=5040,8!=40320 9!=362880 10!=362880011!=12!=13!=14!=15!=016!=0017!=00018!=800019!=83200020!=6640000另外,数学家定义,0!=1,所以0!=1![编辑本段]【阶乘的定义范围】通常我们所说的阶乘是定义在自然数范围里的,小数没有阶乘,像0.5!,0.65!,0.777!都是错误的.但是,有时候我们会将Gamma函数定义为非整数的阶乘,因为当x是正整数n的时候,Gamma函数的值是n-1的阶乘.¤伽玛函数(Gamma Function) Γ(x)=∫e^(-t)*t^(x-1)dt (积分下限是零上限是+∞)(x0,-1,-2,-3,……) 运用积分的知识,我们可以证明Γ(x)=(x-1) * Γ(x-1) 所以,当x是整数n时,Γ(n) = (n-1)(n-2)……=(n-1)!这样Gamma 函数实际上就把阶乘的延拓.¤欧拉等式x!=)=∫-(ln(x))^ndx (积分下限是零上限是+1)(x>0)¤[计算机科学] 用Ruby求365的阶乘.def AskFactorial(num) factorial=1; 1.step(num,1){|i| factorial*=i} return factorial end factorial=AskFactorial(365) puts factorial ¤【阶乘有关公式】n!sqrt(2*pi*n)(n/e)^n该公式常用来计算与阶乘有关的各种极限.
为您推荐:
其他类似问题
扫描下载二维码关于数学排列的问题.请问这个公式是怎么来的?A-n-m(下标n,上标m)=n!除以乘以(n-m)!Anm=n(n-1)(n-2)(n-2)···3x2x1为什么等于:Anm=n(n-1)(n-2)(n-3)(n-m+1),阶乘是怎么带到公式里的?_百度作业帮
关于数学排列的问题.请问这个公式是怎么来的?A-n-m(下标n,上标m)=n!除以乘以(n-m)!Anm=n(n-1)(n-2)(n-2)···3x2x1为什么等于:Anm=n(n-1)(n-2)(n-3)(n-m+1),阶乘是怎么带到公式里的?
A(n,m)=n(n-1)(n-2)(n-3)···(n-m+1)A(n,n)=n(n-1)(n-2)(n-3)...(n-m+1)*(n-m)···3x2x1=n!A(n,m)=n(n-1)(n-2)(n-3)···(n-m+1)=n!/(n-m)!
阶乘公式我理解了,但是我是看不懂怎么退出后面的,怎么把阶乘带入近这个公式的:Anm=n(n-1)(n-2)(n-3)···(n-m+1)为什么等于:Anm=n!/(n-m)!,我看不懂是怎么推导出来到的?我知道阶乘公式,怎么把阶乘带进这个公式里面?
A(n,n)/A(n,m)=n!/[n(n-1)(n-2)(n-3)···(n-m+1)]
=A(n,n)/A(n,m)=n!/[n(n-1)(n-2)(n-3)···(n-m+1)*(n-m)···3x2x1
/(n-m)···3x2x1]
=A(n,n)/A(n,m)=n!/[n!/(n-m)!]
A(n,m)=n(n-1)(n-2)(n-3)···(n-m+1)=n!/(n-m)!
为您推荐:
其他类似问题
是C-n-m(下标n,上标m)=n!除以乘以(n-m)!
扫描下载二维码

我要回帖

更多关于 java求n的阶乘 的文章

 

随机推荐