【发布时间】:2017-10-13 03:29:20
【问题描述】:
我被要求仅使用递归方法进行选择排序代码。所以我考虑制作另一个函数来查找存储最大值的数组,然后将其切换到我的另一个函数中。
void p_rec_max(int data[], int cur, int arrSize,int * x) {
if(cur < arrSize - 1) {
if(data[cur] > data[arrSize - 1]) {
*x = cur;
} else if(data[cur] < data[arrSize - 1]){
*x = arrSize - 1;
}
p_rec_max(data,cur + 1,arrSize,&x);
}
}
void rec_selection_sort(int data[], int arrSize) {
if(arrSize > 0) {
int maxi,temp;
p_rec_max(data,0,arrSize,&maxi);
temp = data[arrSize - 1];
data[arrSize - 1] = data[maxi];
data[maxi] = temp;
rec_selection_sort(data,arrSize - 1);
}
}
收到这样的警告
在函数“p_rec_max”中: 警告:从不兼容的指针类型传递“p_rec_max”的参数 4 [默认启用] 注意:预期为“int *”,但参数类型为“int **”
而且它根本不会改变我的数组。 我缺乏在函数中传递指针的信息不能帮助我解决这个问题。 你们能修复我的代码,然后向我解释我的代码有什么问题吗? 谢谢
【问题讨论】:
标签: c function pointers recursion