This tutorial will show you how to return array of products of all other numbers from a given array. Let’s say you are given an array of non-zero integers. So you have to return an output array of products of all other numbers except the number itself.

For example, an input array a[]={1, 2, 3, 4}, so the output array will be out[]={24, 12, 8, 6}.

Therefore, if we analyze the above output array, then

at array index 0, the output is formulated as 2x3x4 = 24.

at array index 1, the output is formulated as 1x3x4 = 12.

at array index 2, the output is formulated as 1x2x4 = 8.

at array index 3, the output is formulated as 1x2x3 = 6.

Let’s move on to the implementation of Java code to return array of products of all other numbers from a given array.

The implementation can be done in three ways with O(n) time complexity.

**First Approach**

public class ArrayProductsDiv { public static void main(String[] args) { int[] a = new int[] { 1, 2, 3, 4 }; int out[] = new int[4]; int p = 1; for (int i = 0; i < a.length; ++i) { p *= a[i]; } for (int i = a.length - 1; i >= 0; --i) { out[i] = p / a[i]; } for (int i = 0; i < out.length; i++) { System.out.println(out[i]); } } }

So in the above code we first calculate product for all numbers in the given array. And finally we divide product by each array element and get the desired output.

**Second Approach**

In the first approach we used division to find out the desired results but here we find out the desired results without division.

public class ArrayProductsNoDiv { public static void main(String[] args) { int[] a = new int[] { 1, 2, 3, 4 }; int out[] = new int[4]; int prod = 1; for (int i = 0; i < a.length; ++i) { out[i] = prod; prod *= a[i]; } prod = 1; for (int i = a.length - 1; i >= 0; --i) { out[i] *= prod; prod *= a[i]; } for (int i = 0; i < out.length; i++) { System.out.println(out[i]); } } }

**Third Approach**

In this example we will see the recursive function to get the desired output

public class ArrayProductsRecursive { public static void main(String[] args) { int[] a = new int[] { 1, 2, 3, 4 }; product(a, 1, 0); for (int i = 0; i < a.length; i++) { System.out.println(a[i]); } } static int product(int[] a, int prod, int n) { return (n == a.length) ? 1 : a[n] * (prod = product(a, a[n] * (a[n] = prod), n + 1)) + 0 * (a[n] *= prod); } }

You will find more solutions here https://stackoverflow.com/questions/2680548/given-an-array-of-numbers-return-array-of-products-of-all-other-numbers-no-div

Thanks for reading.

**Tags:**Array • Java Array