黑马程序员技术交流社区

标题: 请教一下各位大神 什么叫递归 [打印本页]

作者: hubei3805979    时间: 2016-6-23 22:19
标题: 请教一下各位大神 什么叫递归
方便留个案例参考一下  谢谢
作者: 1316582449    时间: 2016-6-23 22:36
递归,就是在运行的过程中调用自己。

构成递归需具备的条件:

函数嵌套调用过程示例

1. 子问题须与原始问题为同样的事,且更为简单;

2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。

在数学和计算机科学中,递归指由一种(或多种)简单的基本情况定义的一类对象或方法,并规定其他所有情况都能被还原为其基本情况。

例如,下列为某人祖先的递归定义:

某人的双亲是他的祖先(基本情况)。某人祖先的双亲同样是某人的祖先(递归步骤)。斐波纳契数列(Fibonacci Sequence),又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21..... I

作者: Ake丶    时间: 2016-6-23 22:47
public static void main(String[] args[]) {
      int b=function(9);//求阶乘。
      System.out.print(b);
}
//求阶乘方法,只针对正数输入,没对负数做判断。
public static int function(int n) {
     int a;
     if(n > 0) {
       a=function(n-1)*n;
     }
     else {
      a=1;
      }
     return a;
}
作者: crazymen    时间: 2016-6-23 22:48
这个我也不懂,很伤脑,有些大神很会这个
作者: 彼岸轮回    时间: 2016-6-23 22:52
就是在运行的过程中不断调用自身,但要有出口,否则会报错深度递归
作者: 940752944    时间: 2016-6-23 23:11
程序自己调用自己
作者: 小雨皮    时间: 2016-6-23 23:32
函数自己调用自己,递归方法写着简单,却没有循环效率高,也浪费内存,
例如
n! = n * (n-1) * (n-2) * ...* 1(n>0)

//阶乘
int recursive(int i)
{
        int sum = 0;
        if (0 == i)
                return (1);
        else
                sum = i * recursive(i-1);
        return sum;
}




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