Multiply two integers without using multiplication, division and bitwise operators, and no loops

By making use of recursion, we can multiply two integers with the given constraints.

To multiply x and y, recursively add x y times.

C++

 // C++ program to Multiply two integers without  // using multiplication, division and bitwise //  operators, and no loops #include    using namespace std; class GFG {        /* function to multiply two numbers x and y*/ public : int multiply(int x, int y) {     /* 0 multiplied with anything gives 0 */     if(y == 0)     return 0;        /* Add x one by one */     if(y > 0 )     return (x + multiply(x, y-1));        /* the case where y is negative */     if(y < 0 )     return -multiply(x, -y); } };    // Driver code int main() {     GFG g;     cout << endl << g.multiply(5, -11);     getchar();     return 0; }    // This code is contributed by SoM15242

C

 #include /* function to multiply two numbers x and y*/ int multiply(int x, int y) {    /* 0  multiplied with anything gives 0 */    if(y == 0)      return 0;       /* Add x one by one */     if(y > 0 )      return (x + multiply(x, y-1));       /* the case where y is negative */     if(y < 0 )      return -multiply(x, -y); }    int main() {   printf(" %d", multiply(5, -11));   getchar();   return 0; }

Java

 class GFG {            /* function to multiply two numbers x and y*/     static int multiply(int x, int y) {                    /* 0 multiplied with anything gives 0 */         if (y == 0)             return 0;                /* Add x one by one */         if (y > 0)             return (x + multiply(x, y - 1));                /* the case where y is negative */         if (y < 0)             return -multiply(x, -y);                        return -1;     }            // Driver code     public static void main(String[] args) {                    System.out.print(" " + multiply(5, -11));     } }    // This code is contributed by Anant Agarwal.

Python3

 # Function to multiply two numbers # x and y def multiply(x,y):        # 0 multiplied with anything     # gives 0      if(y == 0):         return 0        # Add x one by one      if(y > 0 ):         return (x + multiply(x, y - 1))        # The case where y is negative     if(y < 0 ):         return -multiply(x, -y)        # Driver code print(multiply(5, -11))    # This code is contributed by Anant Agarwal.

/div>

C#

 // Multiply two integers without // using multiplication, division // and bitwise operators, and no // loops using System;    class GFG {            // function to multiply two numbers     // x and y     static int multiply(int x, int y) {                    // 0 multiplied with anything gives 0         if (y == 0)             return 0;                // Add x one by one         if (y > 0)             return (x + multiply(x, y - 1));                // the case where y is negative         if (y < 0)             return -multiply(x, -y);                        return -1;     }            // Driver code     public static void Main() {                    Console.WriteLine(multiply(5, -11));     } }    // This code is contributed by vt_m.

PHP

 0 )     return (\$x + multiply(\$x,                            \$y - 1));    /* the case where  y is negative */ if(\$y < 0 )     return -multiply(\$x, -\$y); }    // Driver Code echo multiply(5, -11);    // This code is contributed by mits. ?>

Output:

-55

Time Complexity: O(y) where y is the second argument to function multiply().

Russian Peasant (Multiply two numbers using bitwise operators)

Please write comments if you find any of the above code/algorithm incorrect, or find better ways to solve the same problem.

tags:

Mathematical Mathematical