给定一个数组,求任意(N-1)个元素的乘积中的最大值?
题目------子数组的最大乘积? 给定一个长度为N的整数数组(数组元素可以为正或负或0),计算任意(N-1)个元素的乘积中的最大值。
#include
#define N 8
int recur_multi(int a[], int len);
int main(int argc, char *argv[])
{
int a[N] = {5, -2, -3, -5, 3, 2, 1, 4};
int b[N] = {0};
int i;
int tmp;
int max;
for (i = 0; i < N; ++i)
{
tmp = a[i];
a[i] = 1;
b[i] = recur_multi(a, N-1);
a[i] = tmp;
}
for (i = 0; i < N; ++i)
{
printf("%d\t", b[i]);
}
max = b[0];
for (i = 1; i < N; ++i)
{
if (b[i] > max)
{
max = b[i];
}
}
printf ("\n%d\n",max);
return 0;
}
int recur_multi(int a[], int len)
{
if (0 == len)
{
return a[0];
} else {
return a[len] * recur_multi(a, len-1);
}
}