1

请以最简单的方式解释递归的工作原理。

4

5 回答 5

6

如前所述,递归是函数调用自身的时候。这里说明了使用factorial,其中factorial(5)数学评估为值5 * 4 * 3 * 2 * 1

public int factorial(int x) {
   if (x == 1) return 1;
   else return x * factorial (x - 1);
}

// Try routine
factorial(3);

评估为

 factorial(1) = 1                                        = 1
 factorial(2) = 2 * factoral(1)                          = 2 * 1 
 factorial(3) = 3 * (2 * factorial(2) * (factorial(1))   = 3 * 2 * 1
 ...
于 2012-10-14T18:26:23.013 回答
4

通常,它是一个函数,它自己计算一个结果,然后调用自己来获取其余的结果

例如,要获得小于或等于 3 的所有正数,该函数会说:“一个结果是 3,其余结果都是小于或等于 2 的正数。让我们用 2 来称呼自己并将结果添加到我计算的那个。”

当然,递归函数需要小心有一个“结束条件”,否则它们永远不会返回结果。在这个例子中,结束条件是当函数以 0 调用时,它应该只返回 0。

于 2012-10-14T18:27:11.037 回答
1

递归是一种从自身内部调用自身的方法。

例子:

public void recur(int x)
    recur(10);
end
于 2012-10-14T18:19:01.780 回答
1

这是递归方法的一个简单示例:-

public int recur(int count) {
   if (count < 10) {
       return count + recur(count++);
   }
   return count;
}

System.out.println(recur(0));  // Invoke first time
于 2012-10-14T18:19:03.440 回答
1

递归是函数调用自身的时候:

int factorial(int integer)
{
    if (integer == 1)
        return 1;
    else
        return (integer*(factorial(integer-1)));
}
于 2012-10-14T18:20:09.573 回答