Java 迭代与递归

来源:互联网 发布:域名如何icp备案 编辑:程序博客网 时间:2024/06/07 08:46

因为最近公司项目需求,实现Java桌面程序实现树形结构 笔者查阅了大量的实现java树形的方法,其中就用到了递归,下面就简单说一下递归与迭代的区别和实现方式


递归

所谓递归:是函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象。
简单来说就是函数根据函数本身查询函数自己获取结果
英文名:recursive algorithm
递归算法是把问题为规模缩小的同类问题的子问题。,然后递归调用函数,来表示问题的解释结果
一个过程或者函数,直接或者间接调用自己本身这种过程就叫做递归过程,

迭代

迭代:迭代就是我们最常见的循环,利用变量(函数)的原值推算出变量(函数)的一个新值,如果形容递归是自己调用自己的话,迭代就是变量A不停的调用变量B.
递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换.能用迭代的不用递归,递归调用函数,浪费空间,


java最简单的递归转化迭代的例子:


求1到10 


递归:
public static void main(String[] args)
{
//输出function
  function(10);
}
//定义function方法
void function(int i)
{
if(i<10)
{
  System.out.println(i);
  function(i++);
}
}
迭代:
public static void main(String[] args)
{
  for(int i=1;i<=10;i++)
    System.out.println(i);
}

在很多种情况下,迭代和递归都可以完成相同的功能, 不过递归有些功能迭代就完成不了。比如笔者近期用到的树形数据,递归的自查询得有点就显示出来了,而如果用迭代实现代码量相对就会比较大,  并且代码没有递归简洁,熟练使用递归后能提高代码质量。(笔者也在学习当中)

以上就是迭代和递归的区别,有机会会再写一篇适用于递归查询的例子(如:获取树形结构,笔者也正在实现)。如果有理解不到位的地方请诸位大神指教!
原创粉丝点击