给定一个数组,求任意(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);
    }
}