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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李杰 初级黑马   /  2012-8-31 21:08  /  1921 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

跟我详解一下什么时候用递归,递归有什么好处,递归需要注意什么!!!
最好给我多举几个经典的例子,

2 个回复

倒序浏览
  1. public class DiGui
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 System.out.println(fab(10));
  6.                 System.out.println(jieCheng(1));
  7.         }
  8.        
  9.         //斐波那契数列
  10.         public static int fab(int n)
  11.         {
  12.                 if (n==1 || n==2)
  13.                 {
  14.                         return 1;  //此方法的出口
  15.                 }else if (n>2) {
  16.                         return fab(n-1)+fab(n-2);
  17.                 }else {
  18.                         return 0; //表明传入的参数有误,n必须为大于0的整数。
  19.                 }
  20.         }
  21.        
  22.         //求阶乘
  23.         public static int jieCheng(int n)
  24.         {
  25.                 if (n==0)
  26.                 {
  27.                         return 1;  //此方法的出口
  28.                 }else if (n>0) {
  29.                         return n*jieCheng(n-1);
  30.                 }else {
  31.                         return 0; //表明传入的参数有误,n必须为大于等于0的整数。
  32.                 }
  33.         }
  34. }
复制代码
所谓递归就是方法调用自身。最重要的就是事先要想到方法的出口,不然的话就是死循环了。
有两个简单的递归的例子。
1,求斐波那契数列:1,1,2,3,5,8,13……。求此数列的第n个数字:
2,求阶乘,n!
回复 使用道具 举报
递归的使用
     什么叫递归 ?
     函数自身直接或者间接的调用到了自身
     什么时候使用递归 ?
     一个功能在被重复使用,并每次使用时,参与运算的结果和上一次调用有关 。这时可以使用递归来解决问题 。
     使用注意事项 :
     递归一定要明确条件,否则容易栈溢出
     递归的图解

QQ截图20120831231025.png (37.97 KB, 下载次数: 10)

QQ截图20120831231025.png
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马