1、首先在電腦打開eclipse軟件,創(chuàng)建Scanner對象。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、泰和網(wǎng)站維護(hù)、網(wǎng)站推廣。
2、然后輸出信息,請求用戶輸入要輸入計(jì)算的階乘數(shù)。代碼:System.out.println("請輸入要計(jì)算的階乘數(shù):");
3、然后創(chuàng)建num接受鍵盤輸入的信息。再創(chuàng)建n,sum。
4、然后創(chuàng)建for語句,進(jìn)行計(jì)算階乘。
5、然后在最后,輸出所算的階乘結(jié)果。代碼:System.out.println(n+"的階乘為"+sum);
6、然后再點(diǎn)擊程序運(yùn)行按鈕。在下面的窗口就可以看到運(yùn)行結(jié)果。
1、采用自頂向上的遞歸方法,代碼如下:
import?java.util.Scanner;
public?class?Test?{
@SuppressWarnings("resource")
public?static?void?main(String[]?args)?{
//?從控制臺輸入一個(gè)整數(shù)
Scanner?in?=?new?Scanner(System.in);
int?b?=?in.nextInt();
//?聲明一個(gè)Test對象,調(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ī)模縮小了的同類問題的子問題。然后遞歸調(diào)用函數(shù)(或過程)來表示問題的解。一個(gè)過程(或函數(shù))直接或間接調(diào)用自己本身,這種過程(或函數(shù))叫遞歸過程(或函數(shù)).
3、特點(diǎn):
(1) 遞歸就是在過程或函數(shù)里調(diào)用自身。
(2) 在使用遞歸策略時(shí),必須有一個(gè)明確的遞歸結(jié)束條件,稱為遞歸出口。
(3) 遞歸算法解題通常顯得很簡潔,但遞歸算法解題的運(yùn)行效率較低。所以一般不提倡用遞歸算法設(shè)計(jì)程序。
(4) 在遞歸調(diào)用的過程當(dāng)中系統(tǒng)為每一層的返回點(diǎn)、局部量等開辟了棧來存儲。遞歸次數(shù)過多容易造成棧溢出等。所以一般不提倡用遞歸算法設(shè)計(jì)程序。
import?java.io.BufferedReader;
import?java.io.IOException;
import?java.io.InputStreamReader;
/**
*?Created?by?Administrator?on?2014/12/18.
*/
public?class?Test?{
private?static?int?fact(int?x)?{
if?(x?==?0)?{
return?1;
}?else?{
return?x?*?fact(x?-?1);
}
}
public?static?void?main(String[]?args)?throws?IOException?{
System.out.println("1.輸入名字.");
System.out.println("2.計(jì)算階乘.");
System.out.println("3.退出程序.");
BufferedReader?br?=?new?BufferedReader(new?InputStreamReader(System.in));
int?i?=?new?Integer(br.readLine()).intValue();
switch?(i)?{
case?1:
BufferedReader?br1?=?new?BufferedReader(new?InputStreamReader(System.in));
System.out.println("請輸入你的名字:");
String?str?=?br1.readLine();
System.out.println(str);
break;
case?2:
BufferedReader?br2?=?new?BufferedReader(new?InputStreamReader(System.in));
System.out.println("請輸入一個(gè)大于等于0的數(shù):");
int?result?=?new?Integer(br2.readLine()).intValue();
System.out.println(fact(result));
break;
case?3:
System.exit(0);
}
}
}
不會是gui吧?
使用BigInteger大容量運(yùn)算類計(jì)算100的階乘
一.一般算法(循環(huán))
view plaincopy to clipboardprint?
public class Test {
public static void main(String[] args) {
int result = 1;
for (int i = 1; i = 100; i++) {
result *= i;
}
System.out.println(result);
}
}
public class Test {
public static void main(String[] args) {
int result = 1;
for (int i = 1; i = 100; i++) {
result *= i;
}
System.out.println(result);
}
}
輸出結(jié)果為0,因?yàn)閕nt無法保存下100的階乘的結(jié)果,100的階乘的長度至少大于50位,也要大于long,double
二.使用BigInteger大容量運(yùn)算類
view plaincopy to clipboardprint?
import java.math.BigInteger;
public class Test {
public static void main(String[] args) {
BigInteger result = new BigInteger("1");//為result賦初始值,為1
for (int i = 1; i = 100; i++) {
BigInteger num = new BigInteger(String.valueOf(i));
result = result.multiply(num);//調(diào)用自乘方法
}
System.out.println(result);//輸出結(jié)果
System.out.println(String.valueOf(result).length());//輸出長度
}
}
import java.math.BigInteger;
public class Test {
public static void main(String[] args) {
BigInteger result = new BigInteger("1");//為result賦初始值,為1
for (int i = 1; i = 100; i++) {
BigInteger num = new BigInteger(String.valueOf(i));
result = result.multiply(num);//調(diào)用自乘方法
}
System.out.println(result);//輸出結(jié)果
System.out.println(String.valueOf(result).length());//輸出長度
}
}
計(jì)算結(jié)果為:93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
產(chǎn)度:158
public class Foctarial
{
//發(fā)現(xiàn)用一個(gè)方法調(diào)用比較復(fù)雜,看起來不容易明白,就使用了2個(gè)靜態(tài)方法調(diào)用,一個(gè)實(shí)現(xiàn)
1*2*3 一個(gè)實(shí)現(xiàn)1*2+1*2*3
public static int sumadd(int m)
{
if (m==1)
{
return 1;
}
else
{
return m*sumadd(m-1);//遞歸調(diào)用實(shí)現(xiàn)1*2*3*4
}
}
public static int sum(int n)
{
if (n==1)
{
return 0;
}
return sumadd(n)+sum(n-1);//遞歸調(diào)用實(shí)現(xiàn)1*2+1*2*3
}
public static void main(String[] arge)
{
System.out.print(sum(Integer.valueOf(arge[0])));//輸入字符轉(zhuǎn)Int
}
}
新聞標(biāo)題:1024階乘java代碼的簡單介紹
文章轉(zhuǎn)載:http://chinadenli.net/article48/heeohp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、ChatGPT、網(wǎng)站制作、網(wǎng)站收錄、定制網(wǎng)站、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)