Given two numbers N and M. The task is to find the product of the 2 numbers using recursion.
Note: The numbers can be both positive or negative.
Examples:
Input : N = 5 , M = 3 Output : 15 Input : N = 5 , M = -3 Output : -15 Input : N = -5 , M = 3 Output : -15 Input : N = -5 , M = -3 Output:15
A recursive solution to the above problem for only positive numbers is already discussed in the previous article. In this post, a recursive solution for finding the product for both positive and negative numbers is discussed.
Below is the step by step approach:
- Check if one or both of the numbers are negative.
- If the number passed in the second parameter is negative swap the parameters and call the function again.
- If both of the parameters are negative call the function again and pass the absolute values of the numbers as parameters.
- If n>m call the function with swapped parameters for less execution time of the function.
- As long as m is not 0 keep on calling the function with subcase n, m-1 and return n + multrecur(n, m-1).
Below is the implementation of the above approach:
C++
// C++ program to find product of two numbers// using recursion#include <iostream>using namespace std;// Recursive function to calculate the product // of 2 integersint multrecur(int n, int m){ // case 1 : n<0 and m>0 // swap the position of n and m to keep second // parameter positive if (n > 0 && m < 0) { return multrecur(m, n); } // case 2 : both n and m are less than 0 // return the product of their absolute values else if (n < 0 && m < 0) { return multrecur((-1 * n), (-1 * m)); } // if n>m , swap n and m so that recursion // takes less time if (n > m) { return multrecur(m, n); } // as long as m is not 0 recursively call multrecur for // n and m-1 return sum of n and the product of n times m-1 else if (m != 0) { return n + multrecur(n, m - 1); } // m=0 then return 0 else { return 0; }}// Driver codeint main(){ cout << "5 * 3 = " << multrecur(5, 3) << endl; cout << "5 * (-3) = " << multrecur(5, -3) << endl; cout << "(-5) * 3 = " << multrecur(-5, 3) << endl; cout << "(-5) * (-3) = " << multrecur(-5, -3) << endl; return 0;} |
Java
//Java program to find product of two numbers//using recursionpublic class GFG { //Recursive function to calculate the product //of 2 integers static int multrecur(int n, int m) { // case 1 : n<0 and m>0 // swap the position of n and m to keep second // parameter positive if (n > 0 && m < 0) { return multrecur(m, n); } // case 2 : both n and m are less than 0 // return the product of their absolute values else if (n < 0 && m < 0) { return multrecur((-1 * n), (-1 * m)); } // if n>m , swap n and m so that recursion // takes less time if (n > m) { return multrecur(m, n); } // as long as m is not 0 recursively call multrecur for // n and m-1 return sum of n and the product of n times m-1 else if (m != 0) { return n + multrecur(n, m - 1); } // m=0 then return 0 else { return 0; } } //Driver code public static void main(String[] args) { System.out.println("5 * 3 = " + multrecur(5, 3)); System.out.println("5 * (-3) = " + multrecur(5, -3)); System.out.println("(-5) * 3 = " + multrecur(-5, 3)); System.out.println("(-5) * (-3) = " +multrecur(-5, -3)); }} |
Python3
# Python 3 program to find product of two numbers # using recursion # Recursive function to calculate the product # of 2 integers def multrecur(n, m) : # case 1 : n<0 and m>0 # swap the position of n and m to keep second # parameter positive if n > 0 and m < 0 : return multrecur(m,n) # case 2 : both n and m are less than 0 # return the product of their absolute values elif n < 0 and m < 0 : return multrecur((-1 * n),(-1 * m)) # if n>m , swap n and m so that recursion # takes less time if n > m : return multrecur(m, n) # as long as m is not 0 recursively call multrecur for # n and m-1 return sum of n and the product of n times m-1 elif m != 0 : return n + multrecur(n, m-1) # m=0 then return 0 else : return 0# Driver Codeif __name__ == "__main__" : print("5 * 3 =",multrecur(5, 3)) print("5 * (-3) =",multrecur(5, -3)) print("(-5) * 3 =",multrecur(-5, 3)) print("(-5) * (-3) =",multrecur(-5, -3))# This code is contributed by ANKITRAI1 |
C#
// C# program to find product of // two numbers using recursionusing System;class GFG {// Recursive function to calculate // the product of 2 integersstatic int multrecur(int n, int m){// case 1 : n<0 and m>0// swap the position of n and m// to keep second parameter positiveif (n > 0 && m < 0) { return multrecur(m, n);}// case 2 : both n and m are less than 0// return the product of their absolute valueselse if (n < 0 && m < 0) { return multrecur((-1 * n), (-1 * m));}// if n>m , swap n and m so that // recursion takes less timeif (n > m) { return multrecur(m, n);}// as long as m is not 0 recursively // call multrecur for n and m-1 return // sum of n and the product of n times m-1else if (m != 0){ return n + multrecur(n, m - 1);}// m=0 then return 0else{ return 0;}}// Driver codepublic static void Main() { Console.WriteLine("5 * 3 = " + multrecur(5, 3)); Console.WriteLine("5 * (-3) = " + multrecur(5, -3)); Console.WriteLine("(-5) * 3 = " + multrecur(-5, 3)); Console.WriteLine("(-5) * (-3) = " + multrecur(-5, -3));}}// This code is contributed by anuj_67 |
PHP
<?php// PHP program to find product of // two numbers using recursion// Recursive function to calculate // the product of 2 integersfunction multrecur($n, $m){ // case 1 : n<0 and m>0 // swap the position of n and m to keep second // parameter positive if ($n > 0 && $m < 0) { return multrecur($m, $n); } // case 2 : both n and m are less than 0 // return the product of their absolute values else if ($n < 0 && $m < 0) { return multrecur((-1 * $n), (-1 * $m)); } // if n>m , swap n and m so that // recursion takes less time if ($n > $m) { return multrecur($m, $n); } // as long as m is not 0 recursively call multrecur for // n and m-1 return sum of n and the product of n times m-1 else if ($m != 0) { return $n + multrecur($n, $m - 1); } // m=0 then return 0 else { return 0; }}// Driver codeecho "5 * 3 = " . multrecur(5, 3) . "\n";echo "5 * (-3) = " . multrecur(5, -3) . "\n";echo "(-5) * 3 = " . multrecur(-5, 3) . "\n";echo "(-5) * (-3) = " . multrecur(-5, -3) . "\n"; // This code is contributed by mits?> |
Javascript
<script>// Javascript program to find product // of two numbers using recursion// Recursive function to calculate the// product of 2 integersfunction multrecur(n, m){ // case 1 : n<0 and m>0 // Swap the position of n and m to // keep second parameter positive if (n > 0 && m < 0) { return multrecur(m, n); } // case 2 : both n and m are less than 0 // return the product of their absolute values else if (n < 0 && m < 0) { return multrecur((-1 * n), (-1 * m)); } // If n>m , swap n and m so that recursion // takes less time if (n > m) { return multrecur(m, n); } // As long as m is not 0 recursively // call multrecur for n and m-1 // return sum of n and the product // of n times m-1 else if (m != 0) { return n + multrecur(n, m - 1); } // m=0 then return 0 else { return 0; }}// Driver codedocument.write("5 * 3 = " + multrecur(5, 3) + "<br>");document.write("5 * (-3) = " + multrecur(5, -3) + "<br>");document.write("(-5) * 3 = " + multrecur(-5, 3) + "<br>");document.write("(-5) * (-3) = " + multrecur(-5, -3) + "<br>");// This code is contributed by rutvik_56</script> |
5 * 3 = 15 5 * (-3) = -15 (-5) * 3 = -15 (-5) * (-3) = 15
Time Complexity: O(max(N, M))
Auxiliary Space: O(max(N, M))
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

… [Trackback]
[…] Here you can find 28798 more Info on that Topic: geeksforgeeks.org/product-of-2-numbers-using-recursion-set-2/ […]