如何计算递归结构?

时间:2012-10-15 10:31:04

标签: c++ data-structures syntax

您能告诉我如何计算递归值?

例如以下递归函数:

int rec (int n)
{
    if (n==1) return (1);
    else  
        return (rec(n-1) + rec(n-1));
}

是否有解决这类问题的一般线索?

1 个答案:

答案 0 :(得分:1)

好吧,让我们开始写这个

int rec (int n)
{
  if (n==1) return (1);
  else  
    return (2 * rec(n-1));
}

作为a+a = 2a

接下来我们看到它将2乘以n-1次,并在第n次返回1。

因此,这相当于2 ^(n-1)

这意味着rec(5) = 2^(5-1) = 2^4 = 16

注意:我上面的表单也比你的表单效率高得多,因为我只计算rec(n-1) rec(n-2)等等一次(线性递归)。与函数一样,每个函数都以指数方式计算多次(指数递归)。这意味着虽然我的功能可以很好地扩展,但是对于大于100的任何东西,你的功能基本上都无法使用。