现在的位置: 首页 > 综合 > 正文

第三天(学习记录)

2013年12月16日 ⁄ 综合 ⁄ 共 1168字 ⁄ 字号 评论关闭

8月24日
今天课堂上讲了递归的调用,递归的调用有可能会导致堆栈耗尽,要调用到一定深度后才停止下来。
小试身手:

//下面的程序出现内存出界错误:
class TestRam
{
   public static void main(String[] args)
   {
      byte[] buf = new byte[1024*1024*100];//开辟的内存空间太大了"爆炸"

     
      for(int i=0;i<buf.length;i++)
      {
      }
   }
}

//递归的调用有可能会导致堆栈耗尽

2.//用递归把一个10进制整数转为2进制的实现
class IntoTest
{
   public static void main(String[] args)
   {
      turnNum(10);
   }
  
   public static void turnNum(int num)
   {
      if(num==0)
      {
          return; 
      }
      turnNum(num/2);
      int num1=num%2;
      System.out.print(num1);
   }
}

3.//用递归思想玩转汉诺塔游戏
class Hanoi
{
   public static void main(String[] args)
   {
      hanoi(4,'A','B','C');
   }
  
   public static void hanoi(int n,char a,char b,char c)
   {
      if(n==1)
      {
         move(1,a,c);
         return;
      }
      hanoi(n-1,a,c,b);
      move(n,a,c);
      hanoi(n-1,b,a,c);
   }
}
4.//求公约数的方法
class Gongyue
{
   public static void main(String[] args)
   {
    Gongyue gy = new Gongyue();
     gy.yueshu(12,3);
   }
  
   public void yueshu(int num1,int num2)
   {
     if(num1==num2)
     {
      System.out.println(num1);
     }
   else
       yueshu(abs(num1-num2),min(num1,num2));
   }
  
   public int abs(int num)
   {
      return num>0 ? num: -num;
   }
  
   public int min(int num1,int num2)
   {
      return num1>num2 ?num2:num1;
   }
 
}
5.一个更过瘾的程序: 

抱歉!评论已关闭.