精华内容
下载资源
问答
  • java递归写法

    千次阅读 2017-06-16 05:59:53
    递归是自己调用自己,java里的递归写法如下: /**  * 1*2*(n-1)*n的计算形式,使用递归实现  * @author Administrator  *  */ public class DiGui { //初始化变量,不能使用默认值 private static long ...

    递归是自己调用自己,java里的递归写法如下:

    /**
     * 1*2*(n-1)*n的计算形式,使用递归实现
     * @author Administrator
     *
     */
    public class DiGui {
    //初始化变量,不能使用默认值
    private static long result = 1;

    /**
    * 非递归方式
    * @param n
    * @return
    */
    private static long notDiGui(int n) {
    for(int i = 1; i <= n; i++) {
    result = result * i;
    }
    return result;
    }

    /**
    * 递归
    * @param n
    * @return
    */
    private static long diGui(int n) {
    if(n == 1) {
    return 1;
    }
    return diGui(n - 1) * n;
    }

    public static void main(String[] args) {
    long num$1 = DiGui.notDiGui(9);
    long num$2 = DiGui.diGui(9);
    System.out.println(num$1 + " " + num$2);
    }
    }

    展开全文
  • Java 基本的递归写法

    2016-03-11 14:55:00
    //用于递归的方法,只有把 id 下的所有子孙节点全部存入idList,才会进行下一轮循环 getChildrens(map, id ,idList); } //将之前第一层子节点也加入进来(这个地方根据需要来) idList.addAll...

    1.首先我们得有一个树状结构的表,类似这种结构。必须得有 id,pid  其他的根据需要来。

     

    我们叫它treeTbl表吧。这里pid为0的表示是顶级节点。

     

     

    2.接着select * from treeTbl ,并将得到的list 转换成一个Map集合,

       key 为 pid ,value 为 子元素对象集合或者子元素id集合之类的都可以,根据需要。

       我这里只需要id,所以是定义为了List<string>类型。

      

    		Map<String,List<String>> map=new HashMap<String,List<String>>();
    		for(Object[] obj : list)
    		{
    			String id=obj[0].toString();
    			String pid=obj[1].toString();
    			if(map!=null && map.get(pid)!=null){
    				map.get(pid).add(dic_id);
    			}else{
    				List<String> list_tmp=new ArrayList<String>();
    				list_tmp.add(id);
    				map.put(pid,list_tmp);
    			}
    		}

     

     

    3.递归遍历,说明在注释中

     

    	
    	        //最终得到的子孙集合
    		List<String> idList=new ArrayList<String>();
    		
    		/*
    		  这个pid的值根据需要来,
    		  如果要获取整棵树,这里就填根节点的id,treeTbl表中的根节点的 id 为 0
    		  如果是获取指定父级节点下的所有子孙节点,就填该父节点的 id 值
    		 */
    		List<String> chidrenList=map.get(pid);
    		
    		/*
    		   上面得到的chidrenList仅仅是底下一层的节点集合,也就是说只包含了子节点,未包含子节点下的所有子孙节点
    		   如果变量pid表示第一层的话,这里我们从第二层开始递归
    		   也就是不停的寻找下一层下一层下一层……直到不存在下一层为止
    		   如何判断有无下一层呢,之前创建好的HashMap已存好父子关系,用它来判断就好
    
    		*/
    		for(String id : childrenList){
    			//用于递归的方法,只有把 id 下的所有子孙节点全部存入idList,才会进行下一轮循环
    			getChildrens(map, id ,idList);
    		}
    		
    		//将之前第一层子节点也加入进来(这个地方根据需要来)
    		idList.addAll(chidrenList);

     

     

     

      

    	 private void getChildrens(Map<String,List<String>> map,String id,List<String> idList)
    	 {
    		//查询当前id下的子级的集合
    		List<String> list=map.get(id);
    		
    		//如果list不为空,则表示该id下还有子id,重新调用当前方法进行递归查询
    		if(list!=null && list.size()>0){
    			for(String id2 : list){
    				//存入集合
    				idList.add(id2);
    				//再查一次
    				getChildrens(map, id2, idList);
    			}
    		}
    		
    	 }

     

     

     

     

    • 大小: 6.1 KB

    转载于:https://www.cnblogs.com/xcxcxcxc/p/5541142.html

    展开全文
  • public class SwapNode2 { public static ListNode swapNode(ListNode head){ if(head == null || head.next == null){ return head; } ListNode firstNode = head; ListNode secondNode = head.next;...
    public class SwapNode2 {
        public static ListNode swapNode(ListNode head){
            if(head == null || head.next == null){
                return head;
            }
            ListNode firstNode = head;
            ListNode secondNode = head.next;
    
            firstNode.next = swapNode(secondNode.next);
            secondNode.next = firstNode;
    
            return secondNode;
        }
    
        public static void main(String[] args){
            ListNode head = new ListNode(1);
            ListNode node1 = new ListNode(2);
            ListNode node2 = new ListNode(3);
            ListNode node3 = new ListNode(4);
            head.next = node1;
            node1.next = node2;
            node2.next = node3;
            head = swapNode(head);
            ListNode temp = head;
            while (temp != null){
                System.out.println(temp.val);
                temp = temp.next;
            }
        }
    }
    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    

     

    展开全文
  • 主要给大家介绍了关于java利用递归调用实现树形菜单样式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • public static String getXSDLabel(Element element,String name) { return name; }
  • 递归之斐波那契数列java的三种写法

    万次阅读 2016-10-26 20:02:28
    第一种普通写法 public class Demo { public static void main(String[] args) { int num1 = 1; int num2 = 1; int num3 = 0; System.out.println(num1); System.out.pr

    第一种普通写法


    public class Demo {
    
        public static void main(String[] args) {
            int num1 = 1;
            int num2 = 1;
            int num3 = 0;
            System.out.println(num1);
            System.out.println(num2);
            for (int i = 1; i < 10; i++) {  
                num3 = num1 + num2;
                num1 = num2;                                                                                                                  
                num2 = num3;
                System.out.println(num3);
            }
        }                     
    }
    

    第二种数组形式递归的写法


    public class DIGUI1 {
     
        public static void main(String[] args) {
            int  []arr=new int[20];
             arr[1]=1;
             arr[2]=1;
             System.out.print(" "+arr[1]);
              System.out.print(" "+arr[2]);
            for(int i=3;i<20;i++){
                 arr[i]=arr[i-1]+arr[i-2];
                System.out.print("   "+arr[i]);
            }
        }
     }
    

    第三种 递归形式的写法

     
    
    public class Demo {
    
    
        public static int f(int n) throws Exception {
            if(n==0){
               throw new Exception("参数错误!");
            }
            if (n == 1 || n == 2) {
                return 1;
            } else {
                return f(n-1)+f(n-2);//自己调用自己
            }
     }
    
    
        public static void main(String[] args) throws Exception {
            for (int i = 1; i <=10; i++) {
                System.out.print(f(i)+" ");
            }
        }  
    }


    用递归最大的问题就是效率问题了,但是有的程序必须用递归写才可以写出来。例如著名的汉若塔问题,如果有谁可以用其他方式写出来我服。


    展开全文
  • * 递归:在方法定义中调用方法本身的现象 * * 方法的嵌套调用,这不是递归 * Math.max(Math.max(a,b),c); * * *自己调用自己是递归 * * public void show(int n){ * * if(n<=0){ * System.out....
  • java递归

    千次阅读 2018-06-19 19:10:00
    1.何为递归个人理解就是自己调用自己,直到满足一个条件结束自己调用自己的过程,这个就是递归。举一个通俗的点的例子:假设你在一个电影院,你想知道自己坐在哪一排,但是前面人很多,你懒得去数了,于是你问前一排...
  • JAVA递归将list转成tree @GetMapping("/sbtree") @ApiOperation("查询所有设备信息并封装到树中") public R getTree() { //获取所有地区信息 List<Map> dqList = sbzlService.getTree(); //获取所有...
  • Java方法递归(含详解)

    千次阅读 2019-09-17 20:01:31
    方法递归 递归很熟悉了,我们再来谈谈递归。 定义: 一个方法在执行过程中调用自身, 就称为 “递归”. 递归,相当于数学上的 “数学归纳法”, 有一个起始条件, 然后有一个递推公式. 例如, 我们求 N! 起始条件: N = 1...
  • 下面提到的CheckList大致是这样一个对象,如下图。... * 递归:根据父节点id获取该父节点下所有的CheckList,不包括该节点 */ public List<CheckList> getChildByParentId(String parentId, List<CheckLi...
  • 树形菜单构建工具类(递归写法) 1. 工具类源码 模型定义,这里受Spring Security的UserService启发,给model设置接口.想要使用此工具类的话,实现此接口即可. package xyz.yq56.easytool.abs; import java.util.List; ...
  • Java实现简单的递归操作

    万次阅读 多人点赞 2017-04-03 11:22:48
    在数据结构算法设计中,或者一个方法的具体实现的时候,有一种方法叫做“递归”,这种方法在思想上并不是特别难,但是实现起来还是有一些需要注意的。虽然对于很多递归算法都可以由相应的循环迭代来代替,但是对于...
  • (2)递归写法代码分析 同样是选取某个点作为起始点,访问该点未被访问过的领接点,然后以该领接点作为起始点,递归访问以该点作为起始点的未被访问的领接点。直到当以某一个点作为起始点时,其所有的领接点都已被...
  • 由于各种需要有个需求,要使用Java递归实现; 现有Java List数据集合一个,里面的数据结构如下: id name partid ------------------------------- 1 A null 2 a1 1 3 a11 2 4 a111 3 5 a2 ...
  • 【简单】java递归次数

    2020-12-30 20:37:42
    <code class="language-java">class Solution{ public static void test(int i) { while(i != 1) { i--; test(i); } System.out.print(i); } public static void main(String[] args) { test(3); } ...
  • 二分查找的递归写法

    2021-03-26 16:32:57
    package 蓝桥杯1; public class ERFGDG { //int mid; public static void main(String[] args) { int ar[]= {1,5,6,8,10,22,33,66,89,90}; System.out.print(a(ar,0,0,ar.length-1));...static int a(int arr[],...
  • 简单的递归写法

    千次阅读 2019-09-19 11:11:54
    递归:说白了就是方法之中在调用自己的方法 ...import java.io.File; //递归 自己调用自己 public class Digui { //获取E盘下新建文件夹中的所有文件 public static void showAllFile(File fil...
  • 我们发现中都是一些条件只有满足这些条件了才...课前准备 云课堂APP 班级二维码 前情回顾 方法的嵌套调用 1方法嵌套调用的写法 2方法嵌套程序的流程执行 教学目标的确定 通过汉诺塔小游戏程序了解java递归的编程思想和
  • java如何退出所有递归

    千次阅读 2016-07-11 17:27:53
    以异常形式抛出,抛出后执行catch内的语句,与递归本身返回值无关 public class Main {  public static void main(String args[]) {  System.out.println("start!");  try { ...
  • java poi读取excel这种层级结构的递归写法,思路:同列的循环获取,子级递归获取,想清楚每一个单元格变化的地方,传不同的参数。exel的单元格的值只能先读取行,再获取列。 包括合并单元格的获取并不是有序的,...
  • 把数据库中的数据,封装成如下这种格式的数据。 { level:1, id:1, age:16, children: [ { level:2, id:1, ...递归,也就是在方法中,自己调用自己。 重点在最后一个方法 示例代码,根据需求修
  • 二叉树前序中序后序遍历的递归遍历非常简单,这里就写一下非递归的方法。 核心思路是把每一个结点看成父节点,叶子结点是左右孩子是null的父结点。 前序遍历 思路: 使用一个栈来存储结点,以便回到之前的父结点...
  • 快速排序(Quicksort),又称划分交换排序(partition-exchange sort),简称快排。它的原理和冒泡排序法一样都是用交换的方式,...递归: 先以第一个值为基准值,设置其索引为par,将这个值放入一个临时变量tmp中,...
  • 下面小编就为大家带来一篇java、js中实现无限层级的树形结构方法(类似递归)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 二叉树的前中后和层序遍历详细图解(递归和非递归写法) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。 本文链接:...
  • 递归和优化快速排序非递归优化1、 优化基准值的选择2、减少递归次数3、结合堆排序 快速排序 非递归 本质上需要用非递归模拟递归,借助一个栈 import java.util.Arrays; import java.util.Stack; public class ...
  • 插入排序的递归写法

    2016-08-23 09:58:06
    //插入排序的递归写法 public static void digui_insert(int[] a,int index){ if(index>=a.length){ System.out.print(Arrays.toString(a)); return; } int key = a[index]; int i = index -1; ...
  • import java.util.Scanner; public class main5 { static final int max=105; public static void merge(int a[],int l,int mid,int r){ int b[]=new int[max];ww int p1=l,p2=mid+1,k=l; while(p1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,244
精华内容 8,497
关键字:

java递归写法

java 订阅