旗下导航:搜·么
当前位置:网站首页 > JAVA教程 > 正文

java递归算法实例_JAVA教程,java,递归算法

作者:搜教程发布时间:2020-02-05分类:JAVA教程浏览:59评论:0


导读:java中利用while语句求1到100的奇数和_JAVA教程java中利用while语句求1到100的奇数和的方法是:1、首先定义变量i(初始值为1)与变量sum(初始值为0);...

java中利用while语句求1到100的奇数和_JAVA教程

java中利用while语句求1到100的奇数和的方法是:1、首先定义变量i(初始值为1)与变量sum(初始值为0);2、然后利用while语句进行判断即可,例如【while(i<100){sum+=i;i+=2}】。

递归三要素:

1、明确递归终止条件;

2、给出递归终止时的处理办法;

3、提取重复的逻辑,缩小问题规模。

1、1+2+3+…+n

java如何判断long类型字符是否相等_JAVA教程

java判断long类型字符是否相等的方法是:可以直接使用equals方法进行比较,例如【if (obj instanceof Long){return value == ((Long)obj).longValue();}】。

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

(推荐学习:java视频教程)

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入门教程

以上就是java递归算法实例的详细内容,更多请关注ki4网其它相关文章!

java实现写入并保存txt文件_JAVA教程

java实现写入并保存txt文件的方法是:1、【BufferedWriter bw = new BufferedWriter(new FileWriter(path))】;2、【bw.write(数据)】。

标签:java递归算法


欢迎 发表评论: