黑马程序员技术交流社区

标题: 求高手给我深度讲解一下递归 [打印本页]

作者: 李杰    时间: 2012-8-31 21:08
标题: 求高手给我深度讲解一下递归
跟我详解一下什么时候用递归,递归有什么好处,递归需要注意什么!!!
最好给我多举几个经典的例子,
作者: 黑马_许芸    时间: 2012-8-31 22:20
  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!

作者: 冯培军    时间: 2012-8-31 23:11
递归的使用
     什么叫递归 ?
     函数自身直接或者间接的调用到了自身
     什么时候使用递归 ?
     一个功能在被重复使用,并每次使用时,参与运算的结果和上一次调用有关 。这时可以使用递归来解决问题 。
     使用注意事项 :
     递归一定要明确条件,否则容易栈溢出
     递归的图解

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

QQ截图20120831231025.png





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2