java遞歸,java遞歸查詢所有子節點

本文目錄一覽:

java中遞歸演算法是怎麼算的?

1.漢諾塔問題

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. 這是一個排列的例子,它所做的工作是將輸入的一個字元串中的所有元素進行排序並輸出,例如:你給出的參數是”abc” 則程序會輸出:

abc

acb

bac

bca

cab

cba

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

(2)演算法的逼近過程:先確定排列的第一位元素,也就是循環中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。這是一個組合的例子,與上述的例子相似,只是它所做的工作是,輸出所給字元串中制定數目的元素的組合種類

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

(2)逼近過程,當n1 的時候,我們先取第一個元素放入目標數組中,然後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; ia.length; i++) {

b += a[i];

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

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

}

}

}

}

用java遞歸方法實現

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

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

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

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

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

JAVA中的遞歸方法,求講一下。

方法遞歸和循環語句差不多,打個比喻。方法遞歸是小明上樓拿東西,一樓,二樓,三樓……樓頂。在樓頂拿到想要的東西以後,你總不能直接跳下來吧。你得一層一層的返回下來。循環就是驢拉磨,你轉多少圈都是在原地。變化的只是盤子里的東西有變化。方法遞歸不會進入死循環,但陷的太深系統會崩潰。

答得不好抱歉

在JAVA中什麼是遞歸?有什麼用?

Java方法遞歸是指在一個方法的內部調用自身的過程,以此類推就是java方法遞歸的理解思想,具體來講就是把規模大的問題轉化為規模小的相似的子問題來解決。在函數實現時,因為解決大問題的方法和解決小問題的方法往往是同一個方法,所以就產生了函數調用它自身的情況。另外這個解決問題的函數必須有明顯的結束條件,這樣就不會產生無限遞歸的情況了。因此,java方法遞歸的兩個條件就是,一通過遞歸調用來縮小問題規模,且新問題與原問題有著相同的形式;二存在一種簡單情境,可以使遞歸在簡單情境下退出。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/312521.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-06 09:47
下一篇 2025-01-06 09:47

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論