给定一个大小为n
的整数数组a
,编写一个带有原型(prototype)的尾递归函数
int f(int a[], int n);
找到数组的最小元素。
这是我设法想出的最好的:
int f(int a[], int n)
{
static int *min;
if (min == 0)
min = new int(a[n - 1]);
else if (*min > a[n - 1])
*min = a[n - 1];
if (n == 1)
return *min;
else
return f(a, n - 1);
}
它能变得更好吗?我不喜欢使用静态变量。
最佳答案
int f(int a[], int n)
{
if (n == 1)
return a[0];
n--;
return f(a + (a[0] > a[n]), n);
}
关于c++ - 使用尾递归查找数组的最小元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13596455/