遞歸的java代碼 java中的遞歸

java遞歸算法

1.漢諾塔問題

堅守“ 做人真誠 · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價值觀,專業(yè)網(wǎng)站建設服務10余年為成都垃圾桶小微創(chuàng)業(yè)公司專業(yè)提供企業(yè)網(wǎng)站制作營銷網(wǎng)站建設商城網(wǎng)站建設手機網(wǎng)站建設小程序網(wǎng)站建設網(wǎng)站改版,從內(nèi)容策劃、視覺設計、底層架構、網(wǎng)頁布局、功能開發(fā)迭代于一體的高端網(wǎng)站建設服務。

import javax.swing.JOptionPane;

public class Hanoi {

private static final String DISK_B = "diskB";

private static final String DISK_C = "diskC";

private static final String DISK_A = "diskA";

static String from=DISK_A;

static String to=DISK_C;

static String mid=DISK_B;

public static void main(String[] args) {

String input=JOptionPane.showInputDialog("please input the number of the disks you want me move.");

int num=Integer.parseInt(input);

move(num,from,mid,to);

}

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);

}

}

}

2. 這是一個排列的例子,它所做的工作是將輸入的一個字符串中的所有元素進行排序并輸出,例如:你給出的參數(shù)是"abc" 則程序會輸出:

abc

acb

bac

bca

cab

cba

(1)算法的出口在于:low=high也就是現(xiàn)在給出的排列元素只有一個時。

(2)算法的逼近過程:先確定排列的第一位元素,也就是循環(huán)中i所代表的元素,

然后low+1開始減少排列元素,如此下去,直到low=high

public static void permute(String str) {

char[] strArray = str.toCharArray();

permute(strArray, 0, strArray.length - 1);

}

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];

list[low] = list[i];

list[i] = temp;

}

}

}

3。這是一個組合的例子,與上述的例子相似,只是它所做的工作是,輸出所給字符串中制定數(shù)目的元素的組合種類

(1)程序出口在于n=1,此時只要輸出目標數(shù)組的所有元素即可

(2)逼近過程,當n1 的時候,我們先取第一個元素放入目標數(shù)組中,然后n-1,如此下去,最后出來。

import javax.swing.JOptionPane;

public class Combination {

/**

* @param args

*/

public static void main(String[] args) {

String input = JOptionPane.showInputDialog("please input your String: ");

String numString = JOptionPane.showInputDialog("please input the number of your Combination: ");

int num = Integer.parseInt(numString);

Combine(input, num);

}

private static void Combine(String input, int num) {

char[] a = input.toCharArray();

String b = "";

Combine(a, num, b, 0, a.length);

}

private static void Combine(char[] a, int num, String b, int low, int high) {

if (num == 0) {

System.out.println(b);

} else {

for (int i = low; i a.length; i++) {

b += a[i];

Combine(a, num - 1, b, i+1, a.length);

b=b.substring(0, b.length()-1);

}

}

}

}

java遞歸查詢子節(jié)點,按給的示例代碼實現(xiàn)

代碼如下:

import java.util.ArrayList;

import java.util.List;

class Org {

private String id;

private String name;

private String pid;

public Org(String id, String name, String pid) {

this.id = id;

this.name = name;

this.pid = pid;

}

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPid() {

return pid;

}

public void setPid(String pid) {

this.pid = pid;

}

@Override

public String toString() {

return "Org [id=" + id + ", name=" + name + ", pid=" + pid + "]";

}

}

public class App {

static void find(ListOrg list, String pid) {

list.stream().filter(p - p.getPid().equals(pid))

.forEach(org - {

System.out.println(org);

find(list, org.getId());

});

}

public static void main(String[] args) {

ListOrg list = new ArrayList();

list.add(new Org("111", "公司", "0"));

list.add(new Org("222", "部門", "111"));

list.add(new Org("333", "小組", "222"));

list.add(new Org("444", "員工1", "333"));

list.add(new Org("555", "員工2", "333"));

find(list, "0");

System.out.println("------------------------------------");

find(list, "111");

}

}

運行結果:

一段JAVA的遞歸代碼

下面遞歸寫了一段遞歸累加到100,每加20個就換行輸出。

package?zhidao;

public?class?Digui?{

public?static?int?add(int?num){

int?sum?=?0;

StringBuffer?sb?=?new?StringBuffer();

if?(num?=?0)?{

return?0;

}else{

if?(num?==?1)?{

sum?=?sum+1;

}else?{

sum?=?add(num-1)+num;

}

if?(num?%?20?==?0)?{

System.out.println("[index?=?"+num+"?sum?=?"+sum+"]");

}else?{

System.out.print("[index?=?"+num+"?sum?=?"+sum+"],");

}

}

return?sum;

}

public?static?void?main(String[]?args)?{

add(100);

}

}

用java遞歸方法實現(xiàn)

1、遞歸做為一種算法在程序設計語言中廣泛使用,是指函數(shù)/過程/子程序在運行過程中直接或間接調(diào)用自身而產(chǎn)生的重入現(xiàn)象。

2、遞歸算法一般用于解決三類問題:

1)數(shù)據(jù)的定義是按遞歸定義的。(Fibonacci(斐波那契)的函數(shù))

2)問題解法按遞歸算法實現(xiàn)。(回溯)

3)數(shù)據(jù)的結構形式是按遞歸定義的。(樹的遍歷,圖的搜索)

標題名稱:遞歸的java代碼 java中的遞歸
分享地址:http://muchs.cn/article38/hgigsp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、定制開發(fā)、品牌網(wǎng)站制作自適應網(wǎng)站、App設計、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設