您没有设置size
变量.由于size
是一个全局变量,它会自动初始化为0
.
所以当第一次达到这个条件时
if(i < size)
失败,并返回min
,这是1000
请执行下列操作
int max; int i; int a[10]={12,6,-24,78,43,3,22,45,40}; size = 10;
或者,让它变得更好.
int max; int i; int a[10]={12,6,-24,78,43,3,22,45,40}; size = sizeof(a)/sizeof(int);
正如评论中所讨论的,代码中还有另一个错误.您忽略if
块内函数调用的返回值.
您应该使用它将值返回给调用函数.就像是,
if(i < size) { if(min > a[i]) min=a[i]; i++; return getminElement(a); }
正如一些人所指出的,你的代码有点令人困惑,所以我会发布一个更简单的代码,没有static
和global
变量.试着理解它,如果你觉得困难就发表评论.
#include#define MAX 100 int getminElement(int [], int, int); int main() { int min; int i; int a[10]={12,6,-24,78,43,3,22,45,-40}; printf("Smallest element of an array is: %d", getminElement(a, 0, sizeof(a)/sizeof(int))); return 0; } int getminElement(int a[], int index, int size) { int min = 9999; if(index < size) min = getminElement(a, index + 1, size); if(a[index] < min) return a[index]; else return min; }