在尝试使用Horner's Rule计算多项式时,我有一个示例代码段,如下所示:
int Horner( int a[], int n, int x )
{
int result = a[n];
for(int i=n-1; i >= 0 ; --i)
result = result * x + a[i];
return result;
}
我理解a
是系数数组,x
是我要评估的值。我的问题是n
是什么?
答案 0 :(得分:9)
n是多项式的次数(和次数为n的多项式,除了0是特殊的,有n + 1个系数,因此数组的大小= n + 1,n =数组的大小 - 1)
答案 1 :(得分:4)
n是数组的大小
答案 2 :(得分:2)
'n'是数组中最后一个元素的索引。因此,n比数组的大小小。
答案 3 :(得分:2)
代码似乎不正确。声明:
int result = a[n];
如果n是数组的大小,应该失败...如果n是数组的大小减去1,那么它将起作用但在这种情况下函数的契约是非常奇怪的。将空数组传递给函数是不可能的,这不是通用的,需要对调用方进行额外的检查。
答案 4 :(得分:0)
在C ++中,该语言不提供获取数组长度的本机支持。因此,代码必须经常保持一个保持长度的单独变量。在这个例子中,n参数告诉Horner函数数组中有多少元素。
在C ++中,传递元素的数量是惯用的。由于数组基于0,因此数组的最后一个元素是arr[n-1]
。