# Functions Exercises

Write a C program to input a number from user and find power of given number using recursion. How to find power of a number using recursive function in C programming. Logic to find power of a number using recursion in C programming.

**Required knowledge**

Basic C programming, If else,for loop,Functions, Recursion

**Declare recursive function to find power**

Above is the mathematical definition of recursive function to find power of a number. The function accepts two numbers i.e. x and y and calculates x ^ y.

Let us now transform the above mathematical function in C programming context.

- First give a meaningful name to our recursive function say pow().
- The function must accept two numbers i.e. base and exponent and calculate its power. Hence, take two parameters for base and exponent, say pow(double base, int exponent);.
- Finally the function should return base ^ exponent i.e. a double type value.

The final function declaration to calculate power is - double pow(double base, int exponent);.

**Logic to calculate power of a number using recursion**

After declaring pow() function its time to define logic to find power recursively. There can be three cases while calculating power of a number.

- If exponent is 0, then power is 1. This is the base condition of our recursive function.
- If exponent is negative, then power is 1 / (x ^ -y). Which uses recursive call to pow() function for computing the value of (x ^ -1) i.e. 1 / pow(base, -expo).
- If exponent is positive, then calculate power normally using x ^ y. Computing x ^ y also makes a recursive call i.e. base * pow(base, expo - 1)

Let us combine all three conditions in a single recursive function.

**Program to find power of a number using recursion**

/** * C program to find power of a number using recursion */ #include <stdio.h> /* Power function declaration */ double pow(double base, int expo); int main() { double base, power; int expo; /* Input base and exponent from user */ printf("Enter base: "); scanf("%lf", &base); printf("Enter exponent: "); scanf("%d", &expo); // Call pow function power = pow(base, expo); printf("%.2lf ^ %d = %f", base, expo, power); return 0; } /** * Calculate power of any number. * Returns base ^ expo */ double pow(double base, int expo) { /* Base condition */ if(expo == 0) return 1; else if(expo > 0) return base * pow(base, expo - 1); else return 1 / pow(base, -expo); }

**Output**

Enter base: 2

Enter exponent: 5

2.00 ^ 5 = 32.000000