为什么我总是将0作为数组的最小值

时间:2017-05-07 14:02:15

标签: c minimum minmax

下面是我从数组中查找最小值和最大值的代码。任何人都可以解释为什么我得到0作为最小元素的输出?它背后的原因是什么?

我根据需要在数组元素中获得最大值。

#include<stdio.h>
#define N 3

int a[N],min,max, max1,min1;
void minmax(int m,int n);

void minmax(int m, int n){
    if(m==n){
        max=min=a[m];
        return;
    }

    if(m == n-1){
        if(a[m]>a[n]){
            max= a[m];
            min = a[n];

        }
        else{
            max= a[n];
            min = a[m];
        }
    }
    else{

        int mid = (m+n)/2;

        minmax(1,mid);
        max1=max;
        min1=min;
        minmax(mid+1,n);
    }

    if(max1>max){
        max= max1;
    }

    if(min1<min){
        min=min1;
    }


}

int main(){

    int i,j,k;
    printf("Enter array\n");
    for(i=1;i<=N;i++)   //input
        scanf("%d",&a[i]);

    minmax(1,N);

    printf("%d %d",max,min);

}

1 个答案:

答案 0 :(得分:0)

  • minmax功能中,您会在m==n
  • 时从通话中返回
  • 但是当你达到那个时,你知道m和n的值吗?之一 值包括m=n=0

首先,您的for循环从index=1 till N获取一个数组。如果您这样做,请确保在minmax功能中进行必要的更改。

所以,最简单的解决方法(仅在评论中提到)也是:

for(i=1;i<=N;i++)更改为for(i=0;i<N;i++)