Related Articles

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

• Difficulty Level : Easy
• Last Updated : 24 Sep, 2021

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.``?>`

## Javascript

 ``

Output:

`-55`

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

Auxiliary Space: O(y)
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.

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up