本文目錄一覽:
java遞歸演算法的例子。
階乘:
要求:給定一個數值,計算出它的階乘值,例如5的階乘為5*4*3*2*1
實現:
[html] view plaincopy
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 plaincopy
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 plaincopy
span style=”font-size:12px;” span style=”white-space:pre;” /spanprivate static final String DISK_B = “diskB”; span style=”white-space:pre;” /spanprivate static final String DISK_C = “diskC”; span style=”white-space:pre;” /spanprivate static final String DISK_A = “diskA”; span style=”white-space:pre;” /spanstatic 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 plaincopy
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 plaincopy
span style=”font-size:12px;”span style=”white-space:pre;” /spanpublic 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 plaincopy
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中的遞歸方法,求講一下。
方法遞歸和循環語句差不多,打個比喻。方法遞歸是小明上樓拿東西,一樓,二樓,三樓……樓頂。在樓頂拿到想要的東西以後,你總不能直接跳下來吧。你得一層一層的返回下來。循環就是驢拉磨,你轉多少圈都是在原地。變化的只是盤子里的東西有變化。方法遞歸不會進入死循環,但陷的太深系統會崩潰。
答得不好抱歉
用java遞歸方法實現
1、遞歸做為一種演算法在程序設計語言中廣泛使用,是指函數/過程/子程序在運行過程中直接或間接調用自身而產生的重入現象。
2、遞歸演算法一般用於解決三類問題:
1)數據的定義是按遞歸定義的。(Fibonacci(斐波那契)的函數)
2)問題解法按遞歸演算法實現。(回溯)
3)數據的結構形式是按遞歸定義的。(樹的遍歷,圖的搜索)
JAVA如何理解遞歸
1、遞歸做為一種演算法在程序設計語言中廣泛使用,是指函數/過程/子程序在運行過程中直接或間接調用自身而產生的重入現象。
2、遞歸演算法一般用於解決三類問題:
1)數據的定義是按遞歸定義的。(Fibonacci(斐波那契)的函數)
2)問題解法按遞歸演算法實現。(回溯)
3)數據的結構形式是按遞歸定義的。(樹的遍歷,圖的搜索)
原創文章,作者:KR4M3,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/127874.html