没有其他信息。无需担心输入错误。它适用于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;
    }
}


这可能不是您想要的。

09-30 00:00