如何计算递归结构
How to calculate a recursive structure?
你能告诉我我们如何计算递归值吗?
例如,以下递归函数:
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 的任何函数。
相关文章:
- 二叉树结构平衡,使用递归时EXC_BAD_ACCESS
- 如何在C++中表示JSON文档的递归对象结构?
- C++ 递归返回 nullptr 中的结构 ?.
- 递归如何使用堆栈数据结构
- 如何制作递归编译时间变异结构模板
- 没有指针的递归结构?(霍夫曼)
- 使用boost::序列化递归图结构时,如何防止堆栈溢出
- 递归结构的向量有内存问题
- C++,一个通用递归模板函数,用于遍历树状结构
- 如果结构作为递归函数中的参数传递,如何初始化结构的成员变量
- 节省增强精神递归匹配结果为C 结构
- 用载体建立在苍蝇递归结构上
- 双递归结构
- 如何计算递归结构
- 使用结构和递归查找整数数组中的最大数字
- 正在分析boost::spirit上的递归结构
- C++-递归结构-是可能的吗
- 如何使用向量通过指针引用递归结构
- 你能解释一下指针和递归结构体吗?
- c++中的递归结构