【发布时间】:2021-11-27 19:08:57
【问题描述】:
你好我有点挣扎,我真的不知道如何初始化我的 *min *max 和 *sum 变量,以便它不会在循环中不断重新初始化
我这样做了,我想获得有关我应该进行哪些更改的帮助
void min_max_sum_rec(int arr[],int length,int *min,int *max,int *sum){
if(length==1){
return;
}
else{
if(arr[0]<*min){
*min = arr[0];
}
if(arr[0]>*max){
*max = arr[0];
}
sum+=arr[0];
}
min_max_sum_rec(arr+1,length-1,min,max,sum);
}
作为参考,我的教授这样做了:
void min_max_sum(int arr[],int length,int *min,int *max,int *sum){
if(length== 1){
*min=*max=*sum=*arr;
return;
}
min_max_sum(arr+1,length-1,min,max,sum);
*sum+=arr[0];
*min = (*min<arr[0]?*min:arr[0]);
*max = (*max>arr[0]?*max:arr[0]);
}
但我不太明白,因为 *min *sum 和 *max 没有初始化,也无法理解 if 语句。
当我们只有一个整数的数组时,*max *min 和 *sum 不会有相同的值,所以我们之前所做的一切都没有意义吗?
【问题讨论】:
-
也许你的老师希望函数(最初)用
min_max_sum_rec(array, length, INT_MAX, INT_MIN, 0);调用 -
"作为参考,我的教授做了这个:"做了什么?最后一段代码?请编辑您的问题
-
@pmg 不...函数需要一个指针所以你不能传递 INT_MAX!顺便说一句...指向未初始化值的指针很好(在最后一个代码示例中)
标签: arrays c recursion function-definition