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.