没有其他信息。无需担心输入错误。它适用于N = 2。我已标记出问题的出处。支架还可以。
编辑:我还没有解释这个过程。 fir是第一缩写。因此,我只是转到数组的末尾,当它达到N = 2(仅剩2个元素)时,它返回并比较该函数排序级别专用的fir和fir + 1。
X阵列
N个元素
#include <stdio.h>
#include <stdlib.h>
int sort(int*,int,int);
int main()
{
int X[20],N,i;
printf("Number of elements: ");
scanf("%d",&N);
puts("Enter the elements ");
for(i=0;i<N;i++)
scanf("%d",X+i);
if (sort(X,N,0)==1)
printf("it is growing");
else
printf("it's not growing");
}
int sort(int*X,int N,int fir){
if (N==2){
if(X[fir]<=X[fir+1])
return 1;
//problems
else if(sort(X,N-1,fir+1)==1){
if (X[fir]<=X[fir+1])
return 1;
else
return -1;
}
else
return -1;
}
}
最佳答案
sort
中的缩进和大括号缺失可能掩盖了一个问题:
int sort(int*X,int N,int fir){
if (N==2){
if(X[fir]<=X[fir+1])
return 1;
//problems
else if(sort(X,N-1,fir+1)==1){
if (X[fir]<=X[fir+1])
return 1;
else
return -1;
}
else
return -1;
}
}
添加隐式花括号,并更改缩进以使其匹配,如下所示:
int sort(int*X,int N,int fir){
if (N==2){
if(X[fir]<=X[fir+1]) {
return 1;
} else if(sort(X,N-1,fir+1)==1) {
if (X[fir]<=X[fir+1]) {
return 1;
} else {
return -1;
}
}
} else {
return -1;
}
}
这可能不是您想要的。