A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 董将 于 2012-12-22 19:51 编辑

到现在为止还是对递归这块不是很明白,期待解决

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

3 个回复

倒序浏览
所谓递归,是指程序调用自身,当然,递归不会无休止地调用下去,它必然有一个出口,当满足条件时程序也就结束了,不然的话,那就是死循环了。
看下面这个类,有几个递归方法,看了之后肯定会对你学习递归很有帮助的。
  1. /**递归类Recursion的定义*/
  2. public class Recursion{
  3.       //递归方法DecimalToBinary,把一个十进制数转换成二进制数
  4.       public static void DecimalToBinary(int num){
  5.              if(num ==0){        //当num=0时,循环结束
  6.                     return;
  7.              }else{
  8.                     DecimalToBinary(num/2);  //调用递归方法
  9.                     System.out.print (num%2);
  10.              }
  11.              }
复制代码
  1. //递归方法sum,求1+2+...+100 的求和
  2.       public static int sum(int num){
  3.              if(num > 0){
  4.                     return num + sum(num-1); //调用递归方法
  5.              }else{
  6.                     return0;      //当num=0时,循环结束
  7.              }
  8.             
  9.       }   
复制代码
  1.   //递归方法yueshu,求两个数的最大公约数   ,用两个数的绝对值与这两个数较小的那个一直比较,直到相等为止。               
  2.       public static void yueshu(int num1,int num2){
  3.              if(num1 == num2){
  4.                     System.out.println(num1);  //num1=num2时,结束
  5.              }
  6.              else{
  7.                     yueshu(abs(num1-num2),min(num1,num2)); //调用递归方法
  8.              }
  9.                                  
  10.       }
复制代码
当然,关于递归最经典的是关于汉诺塔的,这个在讲到的时候肯定会讲到,
http://baike.baidu.com/view/191666.htm这个是百科的地址,你可以去看看

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
嘎嘎,多谢多谢
回复 使用道具 举报
本帖最后由 依然AI 于 2012-12-18 17:36 编辑

程序调用自身的编程技巧称为递归( recursion)。   一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。   注意:   (1) 递归就是在过程或函数里调用自身;   (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。


上面是递归的定义,,你可以对照着看:

public class Test {         
public static void main(String[] args) {      
           output(1);        
}         
private static void output(int n) {        
         // TODO Auto-generated method stub      
           System.out.println(n);               
if(n<100){                        
n++;                       
  output(n);            
    }        
} }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马