您能告诉我如何计算递归值?
例如以下递归函数:
int rec (int n)
{
if (n==1) return (1);
else
return (rec(n-1) + rec(n-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的任何东西,你的功能基本上都无法使用。