我在理解此代码的一部分时遇到了一些麻烦。我要谈论的部分是在term_min函数中,该函数在其自身内部调用,并用作minim函数的参数(返回minim(array [arraySize],term_min(arraySize-1));)。
有人可以解释一下这实际上是什么吗?这是整个代码:
#include <stdio.h>
#include <limits.h>
/* The program computes the minimum of a array of integer numbers*/
#define NMAX 100
#define MAXIMUM INT_MAX
int array[NMAX];
int minim(int x, int y)
{
if (x <= y) return x;
else return y;
}
int term_min(int arraySize)
{
if (arraySize >= 0) return minim(array[arraySize], term_min(arraySize - 1)); //here's where I have trouble understanding
else return MAXIMUM;
}
int main(void)
{
int i, n;
printf("\nInput the number of the elements of the array n=");
scanf("%d",&n);
printf("\nInput the values of the elements\n");
for (i=0; i<n; ++i)
{
printf("array[%d]=", i);
scanf("%d", &array[i]);
}
printf("\nInput array is:\n");
for (i=0; i<n; ++i)
{
printf("%d\t", array[i]);
if ((i+1) % 10 == 0) printf("\n");
}
printf("\nThe minimum is %d\n", term_min(n-1));
printf("\nPress a key!");
return 0;
}
最佳答案
这是一种计算数组最小值的愚蠢方法,但实际上它的作用是计算出所有数字,除非您用0调用它,否则它将返回最大整数,该整数可以是您的操作系统。
实际上是这样做的,数组为10:
minim( array[9], minim( array[8], minim( array[7], minim( array[6], minim( array[5], minim( array[4], minim( array[3], minim( array[2], minim( array[1], minim( array[0], INT_MAX)))))))))))
关于c - 递归难度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23141507/