如何编写递归函数

时间:2015-02-03 15:09:47

标签: function recursion

如何编写递归函数?你能解释一下函数递归的原理吗,理想情况下是像阶乘或斐波纳契序列这样的例子吗?

3 个答案:

答案 0 :(得分:1)

例如Python中的这种方式:

def f( num ):
    if num == 0:
        return 1

    return num * f( num-1 )

这是Factorial的例子。

通常,您不仅返回一些值,甚至还返回函数本身,因此它将使用另一个参数再次运行。最终它会停止沉浸,当你只返回一个值而不进一步调用函数时(这里我们返回1作为塞子)。

对于num=3,它将是这样的:

f(3)
  |
  return 3 * f(2)
               |
               return 2 * f(1)
                            |
                            return 1 * f(0)
                                         |
                                         return 1

最后它倒退了,所以:

1 * 1 = 1
        |
        1 * 2 = 2
                |
                2 * 3 = 6

这是我们的因素: - )

答案 1 :(得分:0)

如果我正确理解了这个问题,可以在C#中按如下方式计算第二笔金额。

public static Sum(int n)
{
    if ( n == 0 ) // end of recursion, so-called "base case"
    {
        return 0;
    }
    else          // recursion
    {
        return n * n + Sum(n-1);
    }
}

答案 2 :(得分:0)

基本模式是

function(arg) 
    if baseCase 
        return fixedValue
    else
        modify arg
        return function(newArg)

所以权力范例

function int pow(int num) {
    if (num == 0 ) return 1;
    else return num ^ 2 + pow(--num);
}