如何编写具有输入函数(对任何函数都是目标)、输入数字数组和输入数组长度的函数?
功能:
double accumulator(double (*function)(double, double), double array[], int length)
主要的:
int main(){
double array[10];
for (int i=0; i<10; i++)
array[i] = i+1;
printf("Sum is: %g\n", accumulator(sum,array,10));
printf("Product is: %g\n", accumulator(product,array,10));
return 0;
}
例如 sum 应该是 55 (1 + 2 + .... + 10) 和 product 362880 (1 * 2 * ... * 10)。我猜这个函数应该是递归的,但我仍然无法得到正确的结果:/
我有这个非递归解决方案,但它当然只适用于总和......
double accumulator(double (*function)(double, double), double array[], int length)
{
int temp = 0;
for (int i = 0;i<length;i++)
{
temp = (*function)(temp, array[i]);
}
return temp;
}
当然最重要的是:
double sum(double x, double y){
return x+y;
}
double product(double x, double y){
return x*y;
}