# 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``(``"\n %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(``"\n"` `+ 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. `

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

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.