和时间赛跑!

用心做事,诚信做人,超越自我,步步领先

java中的递归
      喜欢用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);
     }
    }
,呵呵,不写了,自己都觉得太简单了!
 
阅读更多
个人分类: 算法驿站
想对作者说点什么? 我来说一句

ava中的递归的资源

2010年06月18日 59KB 下载

java线程中的递归

2015年04月12日 209KB 下载

没有更多推荐了,返回首页

不良信息举报

java中的递归

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭