java繪圖算法樹形圖遞歸分形(分形樹 遞歸流程)

本文目錄一覽:

求Java List 遞歸算法..

無需JAVA遞歸取!

從設計角度看,表結構設計已經有問題了!

即使是樹狀結構,為何表結構沒有體現?這也構成了為何樓主需要想辦法來應對非樹狀結構數據的樹狀顯示問題。

先進一步來說,表加一個grade字段,來表明當前記錄處於第幾級。那麼直接一個SQL就可以取出來:

select lpad(‘ ‘,a.grade,’-‘)||a.name from myList a

這樣就可以按樓主需要的結構取出數據;

但還存在一個問題,就是順序問題,這樣取出的數據是無序的!

那麼我們再進一步看,我在做這種數據結構的表設計時,往往會給每個結點增加兩個字段,left/right,分別代表其在樹中的左右值。

這樣就可以在上面SQL後增加order by a.left以保證取出數據的順序。

JAVA如何理解遞歸

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

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

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

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

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

java 遞歸數據庫生成 樹形結構問題

1、準備表結構及對應的表數據

a、表結構:

create table TB_TREE

(

CID NUMBER not null,

CNAME VARCHAR2(50),

PID NUMBER //父節點

)

b、表數據:

insert into tb_tree (CID, CNAME, PID) values (1, ‘中國’, 0);

insert into tb_tree (CID, CNAME, PID) values (2, ‘北京市’, 1);

insert into tb_tree (CID, CNAME, PID) values (3, ‘廣東省’, 1);

insert into tb_tree (CID, CNAME, PID) values (4, ‘上海市’, 1);

insert into tb_tree (CID, CNAME, PID) values (5, ‘廣州市’, 3);

insert into tb_tree (CID, CNAME, PID) values (6, ‘深圳市’, 3);

insert into tb_tree (CID, CNAME, PID) values (7, ‘海珠區’, 5);

insert into tb_tree (CID, CNAME, PID) values (8, ‘天河區’, 5);

insert into tb_tree (CID, CNAME, PID) values (9, ‘福田區’, 6);

insert into tb_tree (CID, CNAME, PID) values (10, ‘南山區’, 6);

insert into tb_tree (CID, CNAME, PID) values (11, ‘密雲縣’, 2);

insert into tb_tree (CID, CNAME, PID) values (12, ‘浦東’, 4);

2、TreeNode對象,對應tb_tree

public class TreeNode implements Serializable {

private Integer cid;

private String cname;

private Integer pid;

private List nodes = new ArrayList();

public TreeNode() {

}

//getter、setter省略

}

3、測試數據

public class TreeNodeTest {

@Test

public void loadTree() throws Exception{

System.out.println(JsonUtils.javaToJson(recursiveTree(1)));

}

/**

* 遞歸算法解析成樹形結構

*

* @param cid

* @return

* @author jiqinlin

*/

public TreeNode recursiveTree(int cid) {

//根據cid獲取節點對象(SELECT * FROM tb_tree t WHERE t.cid=?)

TreeNode node = personService.getreeNode(cid);

//查詢cid下的所有子節點(SELECT * FROM tb_tree t WHERE t.pid=?)

List childTreeNodes = personService.queryTreeNode(cid);

//遍歷子節點

for(TreeNode child : childTreeNodes){

TreeNode n = recursiveTree(child.getCid()); //遞歸

node.getNodes().add(n);

}

return node;

}

}

輸出的json格式如下:

{

“cid”: 1,

“nodes”: [

{

“cid”: 2,

“nodes”: [

{

“cid”: 11,

“nodes”: [

],

“cname”: “密雲縣”,

“pid”: 2

}

],

“cname”: “北京市”,

“pid”: 1

},

{

“cid”: 3,

“nodes”: [

{

“cid”: 5,

“nodes”: [

{

“cid”: 7,

“nodes”: [

],

“cname”: “海珠區”,

“pid”: 5

},

{

“cid”: 8,

“nodes”: [

],

“cname”: “天河區”,

“pid”: 5

}

],

“cname”: “廣州市”,

“pid”: 3

},

{

“cid”: 6,

“nodes”: [

{

“cid”: 9,

“nodes”: [

],

“cname”: “福田區”,

“pid”: 6

},

{

“cid”: 10,

“nodes”: [

],

“cname”: “南山區”,

“pid”: 6

}

],

“cname”: “深圳市”,

“pid”: 3

}

],

“cname”: “廣東省”,

“pid”: 1

},

{

“cid”: 4,

“nodes”: [

{

“cid”: 12,

“nodes”: [

],

“cname”: “浦東”,

“pid”: 4

}

],

“cname”: “上海市”,

“pid”: 1

}

],

“cname”: “中國”,

“pid”: 0

}

java遞歸算法,怎麼理解???

n! = (n-1)*n!

簡單理解,就是目前的所有任務,等於前面所有的任務+現在的任務。

比如你求 1。。。100的加法總和

實際上是 1… 99 的加法總和 + 100 就是了。

這就是遞歸的來源。

你只需要計算你前一步的任務,然後加上自己,就OK了。

前一步,在再次調用前前一步……

java求解 我要用一維直線分形法畫一座山 就是用遞歸分割和中點置換 我寫好了代碼但是無法出圖 也運行不了

main 方法只是new.調用了無參構造函數…其他的方法沒有做任何操作怎麼會出圖呢

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

一、遞歸算法基本思路:

Java遞歸算法是基於Java語言實現的遞歸算法。遞歸算法是一種直接或者間接調用自身函數或者方法的算法。遞歸算法實質是把問題分解成規模縮小的同類問題的子問題,然後遞歸調用方法表示問題的解。遞歸往往能給我們帶來非常簡潔非常直觀的代碼形式,從而使我們的編碼大大簡化,然而遞歸的思維確實跟我們的常規思維相逆的,通常都是從上而下的思維問題,而遞歸趨勢從下往上的進行思維。

二、遞歸算法解決問題的特點:

【1】遞歸就是方法里調用自身。

【2】在使用遞歸策略時,必須有一個明確的遞歸結束條件,稱為遞歸出口。

【3】遞歸算法代碼顯得很簡潔,但遞歸算法解題的運行效率較低。所以不提倡用遞歸設計程序。

【4】在遞歸調用的過程中系統為每一層的返回點、局部量等開闢了棧來存儲。遞歸次數過多容易造成棧溢出等,所以一般不提倡用遞歸算法設計程序。

【5】在做遞歸算法的時候,一定把握出口,也就是做遞歸算法必須要有一個明確的遞歸結束條件。這一點是非常重要的。其實這個出口就是一個條件,當滿足了這個條件的時候我們就不再遞歸了。

三、代碼示例:

public class Factorial {

    //this is a recursive function

    int fact(int n){

        if (n==1) return 1;

        return fact(n-1)*n;

    }

     

}

     public class TestFactorial {

 

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        Factorial factorial=new Factorial();

        System.out.println(“factorial(5)=”+factorial.fact(5));

    }

}

代碼執行流程圖如下:

此程序中n=5就是程序的出口。

原創文章,作者:BYZGU,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/325546.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BYZGU的頭像BYZGU
上一篇 2025-01-13 13:24
下一篇 2025-01-13 13:24

相關推薦

  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python實現爬樓梯算法

    本文介紹使用Python實現爬樓梯算法,該算法用於計算一個人爬n級樓梯有多少種不同的方法。 有一樓梯,小明可以一次走一步、兩步或三步。請問小明爬上第 n 級樓梯有多少種不同的爬樓梯…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • Harris角點檢測算法原理與實現

    本文將從多個方面對Harris角點檢測算法進行詳細的闡述,包括算法原理、實現步驟、代碼實現等。 一、Harris角點檢測算法原理 Harris角點檢測算法是一種經典的計算機視覺算法…

    編程 2025-04-29
  • 數據結構與算法基礎青島大學PPT解析

    本文將從多個方面對數據結構與算法基礎青島大學PPT進行詳細的闡述,包括數據類型、集合類型、排序算法、字符串匹配和動態規劃等內容。通過對這些內容的解析,讀者可以更好地了解數據結構與算…

    編程 2025-04-29
  • 瘦臉算法 Python 原理與實現

    本文將從多個方面詳細闡述瘦臉算法 Python 實現的原理和方法,包括該算法的意義、流程、代碼實現、優化等內容。 一、算法意義 隨着科技的發展,瘦臉算法已經成為了人們修圖中不可缺少…

    編程 2025-04-29
  • 台階走法遞歸

    台階走法遞歸是一個經典的遞歸問題,在計算機算法中有着廣泛的應用。本篇文章將從遞歸的思想出發,詳細分析如何解決這個問題。 一、遞歸基礎知識 遞歸是指一個函數直接或間接地調用自身。遞歸…

    編程 2025-04-29
  • 神經網絡BP算法原理

    本文將從多個方面對神經網絡BP算法原理進行詳細闡述,並給出完整的代碼示例。 一、BP算法簡介 BP算法是一種常用的神經網絡訓練算法,其全稱為反向傳播算法。BP算法的基本思想是通過正…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • 粒子群算法Python的介紹和實現

    本文將介紹粒子群算法的原理和Python實現方法,將從以下幾個方面進行詳細闡述。 一、粒子群算法的原理 粒子群算法(Particle Swarm Optimization, PSO…

    編程 2025-04-29

發表回復

登錄後才能評論