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

My Personal Notes arrow_drop_up