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);
     }
    }
,呵呵,不写了,自己都觉得太简单了!
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值