使用递归的霍纳规则 C/C++
Horner's Rule C/C++ Using Recursion
我第一次在这里了解霍纳规则:霍纳在C++的统治由于我正在学习递归ATM,我想知道是否可以使用递归来实现此算法?
int HornerR( int a[], int n, int x, int index )
{
if (index==n) return a[n];
else
return x*HornerR(a,n ,x,index+1) + a[index];
}
我认为只有第四个参数才有可能。
你可以用指针算术来做到这一点:
- 数组末尾的基本大小写(检查 n)返回常量参数 递归
- 案例返回添加到变量乘法递归调用的当前单元格
- 递归调用将数组移动到下一个单元格并更新计数器 (n)
基本上,这允许您通过将数组移动到下一个位置并发送(并且始终使用第一个单元格)而不是每次都发送整个数组来计算索引变量
您可以使用函数
中的 3 个参数实现如下函数,前提是数组 pi 包含从索引 0 到 degree+1 的从最高度到 0 的系数。Ex for 3x^2 + 2x^1 + 1 => pi[3] = { 3,2,1}
int compute_by_horner(int *pi, int degree, int x)
{
int i, j;
if (degree == 0)
{
return pi[0];
}
return compute_by_horner(pi, degree-1, x) * x + pi[degree];
}
与其
传递索引,不如将a
视为指针(因为它是)。除此之外,您还需要递减n
,并跟踪它是否已减少到零,而不是跟踪是否index==n
。
相关文章:
- 此代码是否违反一个定义规则
- 生成文件不对文件使用隐式规则
- 变量可能尚未初始化[MIRA 2012规则9.1,强制性]
- 静态结构和一个定义规则
- 尽管遵循了规则,内存泄漏在哪里
- 这是关于成员访问规则的正确摘要吗
- uint_not_usable_without_attribute在业力规则中使用数字生成器时静态断言失败
- 增强精神解析器规则以检测语句中的特殊结尾
- 制作文件:没有规则来制定目标:如何设置正确的规则?
- 为什么此指针值不能转换为整数的规则是什么?
- 传递通用函数,用于梯形规则的数值积分
- C++内存模型中的确切规则阻止在获取操作之前重新排序
- 模板如何影响C++中隐式声明的规则?
- antlr 规则上下文是否可以独立于目标
- Bison/flex 在识别规则后等待输入
- 生成文件中隐式规则中的 -c 标志出错
- 单链接列表实现,规则为 3
- 指针算术规则中的"possibly-hypothetical"是什么意思?
- 假设声明中某些上下文中需要的名称查找规则是什么
- C++ 用于检查容器类中是否存在函数和隐式推导规则的概念