java中的递归

原创 2007年09月15日 11:14:00
      喜欢用dephi写一些程序,总是感觉delphi的vcl特别的好用,接触java来对面向对象有了个全新的认识,确实好,对象的概念让变成变得实体化,思考的空间更大,因为一切都是对象,在oop的编程中也有类似对象的概念,那就是结构体/共同体,在delphi中就是记录record,但是对record的操作就不是很方便了,这样就要引入指针的概念,而java正式取缔了指针,一切都是对象,一个引用就是对对象的单体的地址指向,在团队大峡、stef等的帮助下概念越来越强,也感谢大家!
      设计很多程序的时候都会有个递归算法,就是当程序运行没有达到某种条件的时候就必须重新执行一遍,这个问题对于那些高人来说确实是非常简单的,但是写面向过程习惯了的人可能开始使用java的时候还不是十分的得心应手,原因很简单,因为c++和delphi中都有个goto,确实,goto不是好东西,一旦用的不好会带来灾难性的程序错误,所以java这些面向对象的高级语言中已经给他封杀了,这样对于开始接触java的人就会一时不好适应了!下面就我遇到的几个例子加以说明:
    1、十进制转换成二进制
   
delphi:
   function DecimalToBinaryz(integer i): string;
   var result:string;
        label:again;//goto的标签
   begin
    result:='';
   again:    
   if((i /2)=0) then
       begin
        result:=result+'1';
       return result;
       end;
       else
          begin
           i:=i/2;
           result:=result+'1';
          goto again;
        end;
   end;
 这样使用goto就非常轻松的实现递归调用了,java中没有了goto,这就要自己想办法,其实更简单:
       public static void DecimalToBinary(int num){
              if(num == 0){         //当num=0时,循环结束
                     return;
              }else{
                     DecimalToBinary(num/2);   //调用递归方法
                     System.out.print (num%2);
              }
              }
2、随机数不重复:
  
delphi中
  var num:integer;
  label:again;
  begin
     again:
     num:=random(9999);//随机出来一个0-9999内的数字
     adoconn.str:=....
     ..
     ...//从数据库中查询是否存在相同的num
    if recordcount<>0 then
    goto again else
    return num;
  end;
 这个程序在考试出题中不许同一张试卷不许出现同样的题中就十分管用了,在java中:
  
public static void randomNum(int num){
     int i=math.random(num);   
    boolean ret=...//从数据库中检索确认有无i的重复
    if (ret) {
      randomNum(num);
     }
    }
,呵呵,不写了,自己都觉得太简单了!
 

Java中的递归原理分析

参加工作已经三四年了,再回头来看这些很基础的东西,觉得理解又深入了一层! 解释:程序调用自身的编程技巧叫做递归。 程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设...
  • it_wangxiangpan
  • it_wangxiangpan
  • 2013年01月08日 01:26
  • 21715

《编程导论(Java) ·10.3》补充:递归的优化

递归强大、优雅、易实现...问题是效率和栈溢出(java.lang.StackOverflowError)。 为什么Scheme不需要迭代结构如while、for呢? 在Java编译器不直接支持尾调用...
  • yqj2065
  • yqj2065
  • 2016年06月21日 12:11
  • 925

java递归算法总结

1.何为递归 个人理解就是自己调用自己,直到满足一个条件结束自己调用自己的过程,这个就是递归。举一个通俗的点的例子: 假设你在一个电影院,你想知道自己坐在哪一排,但是前面人很多,你懒得去数了,于是你问...
  • tomcat_2014
  • tomcat_2014
  • 2016年04月10日 17:30
  • 7286

java 递归详解

刚学java的时候通常难以理解递归程序设计的概念。递归思想之所以困难,原因在于它非常像是循环推理(circular reasoning)。它也不是一个直观的过程;当我们指挥别人做事的时候,我们极少会递...
  • qq_14996421
  • qq_14996421
  • 2016年04月29日 11:50
  • 1201

java之递归调用

递归就是自己调用自己,方法与方法之间,类与类之间都可以。所谓递归调用,就是一个方法自己调用自己。在使用递归调用的时候,应该声明一个操作的终结点。不然的话,你的递归程序会因栈空间不足而终止 。   ...
  • u010539352
  • u010539352
  • 2014年09月16日 17:40
  • 2875

java 递归 面试题

package math; public class RevertANumber {     /*      * 一列数的规则如下: 1、1、2、3、5、8、13、21、34.........
  • hlh522521
  • hlh522521
  • 2014年05月13日 14:39
  • 1266

【JAVA】23、方法的递归调用

本篇介绍方法的递归调用
  • omoiato
  • omoiato
  • 2016年02月28日 23:11
  • 2776

java递归简单实例

java递归简单实例
  • long198861
  • long198861
  • 2016年09月21日 09:33
  • 2081

Java递归相关题目

指尖上的Java 2016-12-30 21:37 主页菌按时报到!主页菌由于明天公司要开会(不开僧),所以呢就提前分享几道关于递归的问题,同时也涉及到文件的一点知识!最后再给大家把前几天发...
  • u011277123
  • u011277123
  • 2017年01月03日 09:07
  • 200

Java 基本的递归写法

1.首先我们得有一个树状结构的表,类似这种结构。必须得有 id,pid  其他的根据需要来。  我们叫它treeTbl表吧。这里pid为0的表示是顶级节点。     2.接着select * ...
  • qianliangjiexialing
  • qianliangjiexialing
  • 2016年03月11日 14:55
  • 2722
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java中的递归
举报原因:
原因补充:

(最多只允许输入30个字)