導航:首頁 > 編程語言 > java用遞歸求階乘

java用遞歸求階乘

發布時間:2025-02-07 07:10:23

⑴ 用java遞歸演算法求一個數字的階乘

用遞歸演算法求來一個數字源的階乘的程序如下:
public class JieCheng {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("請輸入一個整數:");
int n = in.nextInt();
System.out.println(n+"!="+f(n));
}
static long f(int n){
if (n==1) return 1;
else return n*f(n-1);
}
}
運行結果:
請輸入一個整數:6
6!=720

⑵ java用函數調用求階乘

public class Factorial{
public Factorial(){};
public Factorial(int i){
System.out.println(recursion(i));//遞歸方法求
}
private int recursion(int i){ ----------遞歸方法主體
if(i<0) //<0退出
return -1;
else if(i==0) //0的階乘=1
return 1;
else //0繼續遞歸
return i*recursion(i-1);
}

public static void main(String[] args){
Factorial factorial=new Factorial(5); //5的階乘
}
}

////////////以下是用你的程序改的,主要是格式問題,思想是對的。你這個//////////是循環求階乘,我上面那個是遞歸求階乘

public class 階乘 {
public static long Jiecheng(int x){
long y=1;
for(int i=1;i<=x;i++)
y=y*i;
return y;

}
public static void main(String args[])
{
System.out.println(階乘.Jiecheng(5));
}
}

⑶ 在java中,用遞歸方法計算n的階乘怎麼輸入

用Java求鍵盤輸入的數的階乘n。(遞歸演算法)packagejiecheng; importjava.util.*; //導入java.util包中的所有類classrep{ publiclongrep(intn){ longi=0; if(n==0||n==1) i=1;

elsi=n*rep(n-1) returni; } } publicclassJie{ publicstaticvoidmain(String[]args){ intn; //此處定義要輸入的數Scanners= newScanner(System.in); //以下三行用於n的值得輸入System.out.print( "請輸入一個整數:"); n=s.nextInt(); repf= newrep(); System.out.println(n+"!="+f.rep(n)); } }

⑷ 用java編寫計算N的階乘

int njiecheng(int x)
{
if(i>1)
{
x=x*njiecheng(x-1);
}
else return 1;
}

⑸ java遞歸演算法的例子。

階乘:

要求:給定一個數值,計算出它的階乘值,例如5的階乘為5*4*3*2*1

實現:

[html] view plain

<span style="font-size:12px;"> // 利用遞歸實現一個數的階乘值 private static BigDecimal getNum(BigDecimal inNum) { if (inNum.compareTo(BigDecimal.ONE) == 0) { return inNum; } return inNum.multiply(getNum(inNum.subtract(BigDecimal.ONE))); }</span>

(2)Fibonacci數列:1,1,2,3,5,8,13……

要求:找出數列中指定index位置的數值

實現:

[html] view plain

<span style="font-size:12px;"> // 利用遞歸實現了Fibonacci數列 private static int fab(int index) { if (index == 1 || index == 2) { return 1; } else { return fab(index - 1) + fab(index - 2); } }</span>

(3)漢諾塔

要求:漢諾塔挪動

實現:

[html] view plain

<span style="font-size:12px;"> <span style="white-space:pre;"> </span>private static final String DISK_B = "diskB"; <span style="white-space:pre;"> </span>private static final String DISK_C = "diskC"; <span style="white-space:pre;"> </span>private static final String DISK_A = "diskA"; <span style="white-space:pre;"> </span>static String from=DISK_A; <span style="white-space:pre;"> </span> static String to=DISK_C; <span style="white-space:pre;"> </span> static String mid=DISK_B; <span style="white-space:pre;"> </span> public static void main(String[] args) { <span style="white-space:pre;"> </span> String input=JOptionPane.showInputDialog("please input the number of the disks you want me move."); <span style="white-space:pre;"> </span> int num=Integer.parseInt(input); <span style="white-space:pre;"> </span> move(num,from,mid,to); <span style="white-space:pre;"> </span> }</span>

[html] view plain

<span style="font-size:12px;"> // 利用遞歸實現漢諾塔 private static void move(int num, String from2, String mid2, String to2) { if (num == 1) { System.out.println("move disk 1 from " + from2 + " to " + to2); } else { move(num - 1, from2, to2, mid2); System.out.println("move disk " + num + " from " + from2 + " to " + to2); move(num - 1, mid2, from2, to2); } }</span>

(4)排列組合

要求:將輸入的一個字元串中的所有元素進行排序並輸出,例如:你給出的參數是"abc",

則程序會輸出

abc

acb

bac

bca

cab

cba

實現:

[html] view plain

<span style="font-size:12px;"><span style="white-space:pre;"> </span>public static void permute(String str) { <span style="white-space:pre;"> </span> char[] strArray = str.toCharArray(); <span style="white-space:pre;"> </span> permute(strArray, 0, strArray.length - 1); <span style="white-space:pre;"> </span>}</span>

[html] view plain

<span style="font-size:12px;"> // 利用遞歸實現,將輸入的一個字元串中的所有元素進行排序並輸出 public static void permute(char[] list, int low, int high) { int i; if (low == high) { String cout = ""; for (i = 0; i <= high; i++) { cout += list[i]; } System.out.println(cout); } else { for (i = low; i <= high; i++) { char temp = list[low]; list[low] = list[i]; list[i] = temp; permute(list, low + 1, high); temp = list[low];

⑹ java遞歸求數字10的階乘。

我按照我的理解給你解答一下,希望你能看明白。

我理解中的遞歸,就是在沒完成當前運算的情況下,先完成當前運算的上一級,如上一級仍未完成則繼續推向上一級,知道完成某一級運算後,在逐條往回返,最終的運算結果就是最終的值。

i 為 10時,add(10) = 10*(add(9)),此時10為整數,而我們需要計算出add(9)為多少;
i 為 9 時,add(9) = 9*(add(8)),這樣再結合上一級 add(10) = 10*9*(add(8))
...
i 為2時, add(2) = 2*(add(1))=2*1,因此add(10) = 10*9*8*7*6*5*4*3*2*1.

⑺ 使用java程序接收一個小於10的整數n,計算並輸出階乘.

我的注釋蠻清楚的,希望對你有助!
import java.util.Random; //引入包.
class TestR
{
public static void main(String[] args)
{
Random r=new Random(); //創建Random 對象r.
int n=r.nextInt(10); //產生小於10 的整數給 n保存.

System.out.println("n="+n); //列印版隨機產生的整數 n.
System.out.println("n 的階權乘= "+recursion(n)); //列印階乘.
}
public static int recursion(int n) //定義函數遞歸,以求階乘.
{
if (n==1 || n==0)
{
return 1;
}else
return n*recursion(n-1);
}
}

閱讀全文

與java用遞歸求階乘相關的資料

熱點內容
手機qq臨時會話代碼 瀏覽:415
陳曉陳妍希2016app 瀏覽:67
襄樊兒童編程有什麼作用 瀏覽:64
同時列印多個pdf文件 瀏覽:823
c編譯中找不到制定文件 瀏覽:139
linuxjvm進程監控 瀏覽:152
小米分類文件找不到 瀏覽:901
電腦怎麼手動獲取網路 瀏覽:317
五行生財app如何 瀏覽:541
文件管理圖標丟失 瀏覽:500
返利網站怎麼經營 瀏覽:738
plc編程時有什麼技巧 瀏覽:276
小蘋果爵士 瀏覽:156
鏡像助手找不到boot文件 瀏覽:506
桌面保護密碼怎麼設置 瀏覽:895
smit工具的log文件有哪些 瀏覽:883
做網站運營要多少錢 瀏覽:933
放在桌面上的文件在c盤 瀏覽:530
哪個app的東西是專櫃的 瀏覽:380
韓劇在哪裡看app 瀏覽:40

友情鏈接