gpt4 book ai didi

c - C中计算任意函数1到10的函数

转载 作者:太空宇宙 更新时间:2023-11-04 05:19:55 25 4
gpt4 key购买 nike

如何编写具有输入函数(对任何函数都是目标函数)、输入数字数组和输入数组长度的函数?

功能:

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;
}

例如,总和应为 55 (1 + 2 + .... + 10),乘积应为 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;
}

最佳答案

有什么问题:

double multiplicator(double (*function)(double, double), double array[], int length)
{
int temp = 1;
for (int i = 0;i<length;i++)
{
temp = (*function)(temp, array[i]);

}
return temp;
}

要么是不同的函数,要么您需要为运算提供中性元素(0 表示求和,1 表示积)。

关于c - C中计算任意函数1到10的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15072265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com