【发布时间】:2016-03-27 18:15:41
【问题描述】:
我编写了以下程序来使用递归从数组中找到最小值元素。但是程序不断向我显示答案为 1000
#include<stdio.h>
#define MAX 100
int getminElement(int []);
int size;
int main(){
int min;
int i;
int a[10]={12,6,-24,78,43,3,22,45,40};
min=getminElement(a);
printf("Smallest element of an array is: %d",min);
return 0;
}
int getminElement(int a[]){
static int i=0,min =1000;
if(i < size){
if(min > a[i])
min=a[i];
i++;
getminElement(a);
}
return min;
}
【问题讨论】:
-
先决定,你想要最小值还是最大值?
-
也许还决定对空数组做什么(即
size== 0)。如果您认为这种情况未定义(assert在这里可能很好),您可以定义单例数组的最小值(即size == 1)是唯一的元素。否则,它是第一个数组元素的较小值和数组其余部分的最小值。