91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java遞歸算法的經典實例

發布時間:2020-04-30 15:12:37 來源:億速云 閱讀:204 作者:小新 欄目:編程語言

今天小編給大家分享的是java遞歸算法的經典實例,相信很多人都不太了解,為了讓大家更加了解java遞歸算法,所以給大家總結了以下內容,一起往下看吧。一定會有所收獲的哦。

遞歸三要素:

1、明確遞歸終止條件;

2、給出遞歸終止時的處理辦法;

3、提取重復的邏輯,縮小問題規模。

1、1+2+3+…+n

import java.util.Scanner;

public class Recursion {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        System.out.println(sum(n));
    }

    public static int sum(int n) {
        if(n == 1) {
            return n;
        }
        else {
            return n + sum(n-1);
        }
    }
}

2、1 * 2 * 3 * … * n

import java.util.Scanner;

public class Recursion {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        System.out.println(multiply(n));
    }

    public static int multiply(int n) {
        if(n == 1) {
            return n;
        }
        else {
            return n*multiply(n-1);
        }
    }
}

3、斐波那契數列

前兩項均為1,第三項開始,每一項都等于前兩項之和。即:1,1,2,3,5,8,…

import java.util.Scanner;

public class Recursion {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();

        System.out.println(fun(n));
    }

    public static int fun(int n) {

        if (n <= 2) {
            return 1;
        }
        else {
            return fun(n-1) + fun(n-2);
        }
    }
}

4、二叉樹的遍歷(前、中、后)

import java.util.Arrays;
import java.util.LinkedList;

public class MyBinaryTree {
    //二叉樹節點
    private static class TreeNode{
        int data;
        TreeNode leftChild;
        TreeNode rightChile;

        public TreeNode(int data) {
            this.data = data;
        }
    }

    //構建二叉樹
    public static TreeNode createBinaryTree(LinkedList<Integer> inputList) {
        TreeNode node = null;
        if(inputList == null || inputList.isEmpty()) {
            return null;
        }
        Integer data = inputList.removeFirst();

        //如果元素為空,則不再遞歸
        if(data != null){
            node = new TreeNode(data);
            node.leftChild = createBinaryTree(inputList);
            node.rightChile = createBinaryTree(inputList);
        }
        return node;
    }

    //前序遍歷:根節點,左子樹,右子樹
    public static void preOrderTraveral(TreeNode node) {
        if (node == null) {
            return;
        }
        System.out.println(node.data);
        preOrderTraveral(node.leftChild);
        preOrderTraveral(node.rightChile);
    }

    //中序遍歷:左子樹,根節點,右子樹
    public static void inOrderTraveral(TreeNode node) {
        if(node == null) {
            return;
        }

        inOrderTraveral(node.leftChild);
        System.out.println(node);
        inOrderTraveral(node.rightChile);

    }

    //后序遍歷:左子樹,右子樹,根節點
    public static void postOrderTraveral(TreeNode node) {
        if (node == null) {
            return;
        }

        postOrderTraveral(node.leftChild);
        postOrderTraveral(node.rightChile);
        System.out.println(node.data);
    }

    public static void main(String[] args) {
       LinkedList<Integer> inputList = new LinkedList<Integer>(Arrays.asList(new Integer[]{3,2,9,null,null,10,null,null,8,null,4}));
       TreeNode treeNode = createBinaryTree(inputList);
       System.out.println("前序遍歷:");
       preOrderTraveral(treeNode);

        System.out.println("中序遍歷:");
        inOrderTraveral(treeNode);

        System.out.println("后序遍歷:");
        postOrderTraveral(treeNode);
    }
}

以上就是java遞歸算法的經典實例的簡略介紹,當然詳細使用上面的不同還得要大家自己使用過才領會。如果想了解更多,歡迎關注億速云行業資訊頻道哦!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

上栗县| 乌兰县| 务川| 绥阳县| 北海市| 阳谷县| 花莲县| 垫江县| 南汇区| 湾仔区| 中阳县| 仙桃市| 开远市| 江西省| 沁水县| 英超| 富民县| 芦溪县| 东乡县| 涪陵区| 富平县| 宝鸡市| 阆中市| 景洪市| 黔西县| 武威市| 介休市| 武夷山市| 霍山县| 紫阳县| 安福县| 徐水县| 石门县| 缙云县| 湄潭县| 垣曲县| 湘乡市| 麻阳| 固安县| 武义县| 射洪县|