【发布时间】:2017-10-05 13:21:39
【问题描述】:
下面是我从数组中查找最小值和最大值的代码。谁能解释为什么我得到 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);
}
【问题讨论】:
-
for(i=1;i<=N;i++)-->for(i=0;i<N;i++)C 是 0 来源。 -
请正确缩进你的代码,这是无法阅读的。
-
a[3]不存在;a[0]尚未设置。 -
你的递归方法坏了;
min和max是全局变量,但您可以像使用它们一样使用它们...