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 <bits/stdc++.h> 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<stdio.h> /* 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
<?php // Works only if a >= 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<bits/stdc++.h> 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<stdio.h> /* 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
<?php /* A recursive function to get a^b Works only if a >= 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.
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.

