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

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

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

## Python

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

Output :

```125
```

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