如何计算递归结构

How to calculate a recursive structure?

本文关键字:递归 结构 计算 何计算      更新时间:2023-10-16

你能告诉我我们如何计算递归值吗?

例如,以下递归函数:

int rec (int n)
{
    if (n==1) return (1);
    else  
        return (rec(n-1) + rec(n-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 的任何函数。