# 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