//控制臺(tái)數(shù)據(jù)自己獲取.
成都創(chuàng)新互聯(lián)專注于天臺(tái)網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供天臺(tái)營(yíng)銷型網(wǎng)站建設(shè),天臺(tái)網(wǎng)站制作、天臺(tái)網(wǎng)頁設(shè)計(jì)、天臺(tái)網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造天臺(tái)網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供天臺(tái)網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
int[] kim = new int[]{6,5,4,3,2,1}//這是應(yīng)該從控制臺(tái)獲取
//遞歸方式獲取階乘
private int getJc(int k){
if(k=1){
return 1;
}else{
return k*getJc(k-1);
}
}
int result=0;
String buffer = "";
for(int i=0;ikim .length;i++){
if(i!=0){
buffer = buffer+" +"+kim[i]+"!";
}else{
buffer=buffer+kim[i] +"!";
}
result =result +kim[i];
}
buffer = buffer+"="+result;
System.out.println(buffer)
親測(cè)可用
long jiecheng(int x)
{
long int i,k=1;
for(i=1;i=x;i++)
k=k*i;
return k;
}
int main()
{
long int j,k=0;
int i;
for(i=1;i=20;i++)
{
j=jiecheng(i);
k+=j;
}
printf("%ld\n",k);
}
輸出的結(jié)果是2561327494111820313
擴(kuò)展資料:
一個(gè)正整數(shù)的階乘(factorial)是所有小于及等于該數(shù)的正整數(shù)的積,并且0的階乘為1。自然數(shù)n的階乘寫作n!。1808年,基斯頓·卡曼引進(jìn)這個(gè)表示法。
亦即n!=1×2×3×...×n。階乘亦可以遞歸方式定義:0!=1,n!=(n-1)!×n。
計(jì)算方法:
大于等于1:
任何大于等于1 的自然數(shù)n 階乘表示方法:n! =?1×2×3×...×(n-1)n或n! = n×(n-1)!
0的階乘:0!=1。
參考資料:百度百科——階乘
import?java.math.BigInteger;
public?class?Test?{
public?static?void?main(String[]?args)?{
int?n?=?6;
System.out.println(jiecheng(n));
}
public?static?BigInteger?jiecheng?(int?i)?{
BigInteger?result?=?new?BigInteger("1");
for?(int?j?=?1;?j?=?i;?j?++)?{
BigInteger?num?=?new?BigInteger(String.valueOf(j));
result?=?result.multiply(num);
}
return?result;
}
1、采用自頂向上的遞歸方法,代碼如下:
import?java.util.Scanner;
public?class?Test?{
@SuppressWarnings("resource")
public?static?void?main(String[]?args)?{
//?從控制臺(tái)輸入一個(gè)整數(shù)
Scanner?in?=?new?Scanner(System.in);
int?b?=?in.nextInt();
//?聲明一個(gè)Test對(duì)象,調(diào)用cal方法獲得結(jié)果
Test?test?=?new?Test();
long?a?=?test.cal(b);
System.out.println(a);
}
//?通過遞歸掉調(diào)用最終返回結(jié)果
public?long?cal(int?number)?{
//?如果數(shù)字為1,則直接返回
if?(number?==?1)?{
return?1;
}?else?{//?否則遞歸求值
return?number?*?cal(number?-?1);
}
}
}
2、遞歸方法:
遞歸算法是把問題轉(zhuǎn)化為規(guī)??s小了的同類問題的子問題。然后遞歸調(diào)用函數(shù)(或過程)來表示問題的解。一個(gè)過程(或函數(shù))直接或間接調(diào)用自己本身,這種過程(或函數(shù))叫遞歸過程(或函數(shù)).
3、特點(diǎn):
(1) 遞歸就是在過程或函數(shù)里調(diào)用自身。
(2) 在使用遞歸策略時(shí),必須有一個(gè)明確的遞歸結(jié)束條件,稱為遞歸出口。
(3) 遞歸算法解題通常顯得很簡(jiǎn)潔,但遞歸算法解題的運(yùn)行效率較低。所以一般不提倡用遞歸算法設(shè)計(jì)程序。
(4) 在遞歸調(diào)用的過程當(dāng)中系統(tǒng)為每一層的返回點(diǎn)、局部量等開辟了棧來存儲(chǔ)。遞歸次數(shù)過多容易造成棧溢出等。所以一般不提倡用遞歸算法設(shè)計(jì)程序。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
long sum=1;
Scanner sin = new Scanner(System.in);
System.out.print("請(qǐng)輸入一個(gè)數(shù)字:");
int s = sin.nextInt();
for(int i=1;i=s;i++){
sum=sum*i;
}
System.out.println(s+"的階乘為:"+sum);
}
}
滿意請(qǐng)采納,謝謝!