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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


C

filter_none

edit
close

play_arrow

link
brightness_4
code

#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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

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.

chevron_right


Python

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right



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++

filter_none

edit
close

play_arrow

link
brightness_4
code

#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

chevron_right


C

filter_none

edit
close

play_arrow

link
brightness_4
code

#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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

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.

chevron_right


Python

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right



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