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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to Multiply two integers without 
// using multiplication, division and bitwise
//  operators, and no loops
#include<iostream>
  
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

chevron_right


C

filter_none

edit
close

play_arrow

link
brightness_4
code

#include<stdio.h>
/* 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("\n %d", multiply(5, -11));
  getchar();
  return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

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("\n" + multiply(5, -11));
    }
}
  
// This code is contributed by Anant Agarwal.

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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.

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// function to multiply 
// two numbers x and y
function 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
echo multiply(5, -11);
  
// This code is contributed by mits.
?>

chevron_right



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.

Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.




My Personal Notes arrow_drop_up

Improved By : Mithun Kumar, SoumikMondal

Article Tags :
Practice Tags :


4


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.