Related Articles

# Write you own Power without using multiplication(*) and division(/) operators

• Difficulty Level : Easy
• Last Updated : 07 Apr, 2021

Method 1 (Using Nested Loops)
We can calculate power by using repeated addition.
For example to calculate 5^6.
1) First 5 times add 5, we get 25. (5^2)
2) Then 5 times add 25, we get 125. (5^3)
3) Then 5 time add 125, we get 625 (5^4)
4) Then 5 times add 625, we get 3125 (5^5)
5) Then 5 times add 3125, we get 15625 (5^6)

## C++

 `// C++ code for power function``#include ``using` `namespace` `std;` `/* Works only if a >= 0 and b >= 0 */``int` `pow``(``int` `a, ``int` `b)``{``    ``if` `(b == 0)``        ``return` `1;``    ``int` `answer = a;``    ``int` `increment = a;``    ``int` `i, j;``    ``for``(i = 1; i < b; i++)``    ``{``        ``for``(j = 1; j < a; j++)``        ``{``            ``answer += increment;``        ``}``        ``increment = answer;``    ``}``    ``return` `answer;``}` `// Driver Code``int` `main()``{``    ``cout << ``pow``(5, 3);``    ``return` `0;``}` `// This code is contributed``// by rathbhupendra`

## C

 `#include``/* Works only if a >= 0 and b >= 0  */``int` `pow``(``int` `a, ``int` `b)``{``  ``//base case : anything raised to the power 0 is 1``  ``if` `(b == 0)``    ``return` `1;``  ``int` `answer = a;``  ``int` `increment = a;``  ``int` `i, j;``  ``for``(i = 1; i < b; i++)``  ``{``     ``for``(j = 1; j < a; j++)``     ``{``        ``answer += increment;``     ``}``     ``increment = answer;``  ``}``  ``return` `answer;``}` `/* driver program to test above function */``int` `main()``{``  ``printf``(``"\n %d"``, ``pow``(5, 3));``  ``getchar``();``  ``return` `0;``}`

## Java

 `import` `java.io.*;` `class` `GFG {``    ` `    ``/* Works only if a >= 0 and b >= 0 */``    ``static` `int` `pow(``int` `a, ``int` `b)``    ``{``        ``if` `(b == ``0``)``            ``return` `1``;``            ` `        ``int` `answer = a;``        ``int` `increment = a;``        ``int` `i, j;``        ` `        ``for` `(i = ``1``; i < b; i++) {``            ``for` `(j = ``1``; j < a; j++) {``                ``answer += increment;``            ``}``            ``increment = answer;``        ``}``        ` `        ``return` `answer;``    ``}` `    ``// driver program to test above function``    ``public` `static` `void` `main(String[] args)``    ``{``        ``System.out.println(pow(``5``, ``3``));``    ``}``}` `// This code is contributed by vt_m.`

## Python

 `# Python 3 code for power``# function` `# Works only if a >= 0 and b >= 0``def` `pow``(a,b):``    ``if``(b``=``=``0``):``        ``return` `1``        ` `    ``answer``=``a``    ``increment``=``a``    ` `    ``for` `i ``in` `range``(``1``,b):``        ``for` `j ``in` `range` `(``1``,a):``            ``answer``+``=``increment``        ``increment``=``answer``    ``return` `answer` `# driver code``print``(``pow``(``5``,``3``))` `# this code is contributed``# by Sam007`

## C#

 `using` `System;` `class` `GFG``{``    ``/* Works only if a >= 0 and b >= 0 */``    ``static` `int` `pow(``int` `a, ``int` `b)``    ``{``        ``if` `(b == 0)``            ``return` `1;``            ` `        ``int` `answer = a;``        ``int` `increment = a;``        ``int` `i, j;``        ` `        ``for` `(i = 1; i < b; i++) {``            ``for` `(j = 1; j < a; j++) {``                ``answer += increment;``            ``}``            ``increment = answer;``        ``}``        ` `        ``return` `answer;``    ``}` `    ``// driver program to test``    ``// above function``    ``public` `static` `void` `Main()``    ``{``        ``Console.Write(pow(5, 3));``    ``}``}` `// This code is contributed by Sam007`

## PHP

 `= 0``// and b >= 0``function` `poww(``\$a``, ``\$b``)``{``    ``if` `(``\$b` `== 0)``        ``return` `1;``    ``\$answer` `= ``\$a``;``    ``\$increment` `= ``\$a``;``    ``\$i``;``    ``\$j``;``    ``for``(``\$i` `= 1; ``\$i` `< ``\$b``; ``\$i``++)``    ``{``        ``for``(``\$j` `= 1; ``\$j` `< ``\$a``; ``\$j``++)``        ``{``            ``\$answer` `+= ``\$increment``;``        ``}``        ``\$increment` `= ``\$answer``;``    ``}``    ``return` `\$answer``;``}` `    ``// Driver Code``    ``echo``( poww(5, 3));`` ` `// This code is contributed by nitin mittal.``?>`

## Javascript

 ``

Output :

`125`

Method 2 (Using Recursion)
Recursively add a to get the multiplication of two numbers. And recursively multiply to get a raise to the power b.

## C++

 `#include``using` `namespace` `std;` `/* A recursive function to get x*y */``int` `multiply(``int` `x, ``int` `y)``{``    ``if``(y)``        ``return` `(x + multiply(x, y - 1));``    ``else``        ``return` `0;``}` `/* A recursive function to get a^b``Works only if a >= 0 and b >= 0 */``int` `pow``(``int` `a, ``int` `b)``{``    ``if``(b)``        ``return` `multiply(a, ``pow``(a, b - 1));``    ``else``        ``return` `1;``}` `// Driver Code``int` `main()``{``    ``cout << ``pow``(5, 3);``    ``getchar``();``    ``return` `0;``}` `// This code is contributed``// by Akanksha Rai`

## C

 `#include``/* A recursive function to get a^b``  ``Works only if a >= 0 and b >= 0  */``int` `pow``(``int` `a, ``int` `b)``{``   ``if``(b)``     ``return` `multiply(a, ``pow``(a, b-1));``   ``else``    ``return` `1;``}   ` `/* A recursive function to get x*y */``int` `multiply(``int` `x, ``int` `y)``{``   ``if``(y)``     ``return` `(x + multiply(x, y-1));``   ``else``     ``return` `0;``}` `/* driver program to test above functions */``int` `main()``{``  ``printf``(``"\n %d"``, ``pow``(5, 3));``  ``getchar``();``  ``return` `0;``}`

## Java

 `import` `java.io.*;` `class` `GFG {``    ` `    ``/* A recursive function to get a^b``    ``Works only if a >= 0 and b >= 0 */``    ``static` `int` `pow(``int` `a, ``int` `b)``    ``{``        ` `        ``if` `(b > ``0``)``            ``return` `multiply(a, pow(a, b - ``1``));``        ``else``            ``return` `1``;``    ``}` `    ``/* A recursive function to get x*y */``    ``static` `int` `multiply(``int` `x, ``int` `y)``    ``{``        ` `        ``if` `(y > ``0``)``            ``return` `(x + multiply(x, y - ``1``));``        ``else``            ``return` `0``;``    ``}` `    ``/* driver program to test above functions */``    ``public` `static` `void` `main(String[] args)``    ``{``        ``System.out.println(pow(``5``, ``3``));``    ``}``}` `// This code is contributed by vt_m.`

## Python3

 `def` `pow``(a,b):``    ` `    ``if``(b):``        ``return` `multiply(a, ``pow``(a, b``-``1``));``    ``else``:``        ``return` `1``;``     ` `# A recursive function to get x*y *``def` `multiply(x, y):``    ` `    ``if` `(y):``        ``return` `(x ``+` `multiply(x, y``-``1``));``    ``else``:``        ``return` `0``;` `# driver program to test above functions *``print``(``pow``(``5``, ``3``));`  `# This code is contributed``# by Sam007`

## C#

 `using` `System;` `class` `GFG``{``    ``/* A recursive function to get a^b``    ``Works only if a >= 0 and b >= 0 */``    ``static` `int` `pow(``int` `a, ``int` `b)``    ``{``        ` `        ``if` `(b > 0)``            ``return` `multiply(a, pow(a, b - 1));``        ``else``            ``return` `1;``    ``}` `    ``/* A recursive function to get x*y */``    ``static` `int` `multiply(``int` `x, ``int` `y)``    ``{``        ` `        ``if` `(y > 0)``            ``return` `(x + multiply(x, y - 1));``        ``else``            ``return` `0;``    ``}` `    ``/* driver program to test above functions */``    ``public` `static` `void` `Main()``    ``{``        ``Console.Write(pow(5, 3));``    ``}``}` `// This code is contributed by Sam007`

## PHP

 `= 0 and b >= 0 */``function` `p_ow( ``\$a``, ``\$b``)``{``    ``if``(``\$b``)``        ``return` `multiply(``\$a``,``          ``p_ow(``\$a``, ``\$b` `- 1));``    ``else``        ``return` `1;``}` `/* A recursive function``   ``to get x*y */``function` `multiply(``\$x``, ``\$y``)``{``    ``if``(``\$y``)``        ``return` `(``\$x` `+ multiply(``\$x``, ``\$y` `- 1));``    ``else``        ``return` `0;``}` `// Driver Code``echo` `pow(5, 3);` `// This code is contributed by anuj_67.``?>`

## Javascript

 ``

Output :

`125`

Please write comments if you find any bug in above code/algorithm, or find other 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