Recursion in Programming
Tags: javascript, python, cpp
Published: 2023-02-14 03:13:38

As a programmer, you must have or will come across tasks that lead to the need for new similar lines of code. The new tasks may appear smaller or may need the repetition of smaller similar commands to handle them. They may require adding other lines of code to terminate them, which leads to increase in the size of the codebase. You can eliminate all this by implementing recursion in your programs. Let's dive into recursion and see what it's all about.

## What is Recursion

Recursion is the process where a function calls itself directly or indirectly. Recursive functions solves problems by calling itself and breaking down original problems into smaller subproblems. When using recursion, you need to define an exit condition to prevent the functions from being called infinitely. The condition that when met terminates the function is known as the **base condition.**
Recursion is a concept rooted in a number of programming languages as we'll see. 


## Why choose recursion?

One of the main advantages of using recursion is that it reduces the complexity of different tasks and reduces the time spent writing and debugging. It leads to code that is easy on the eye, looks elegant and allows faster completion of tasks. Code that uses recursive functions is significantly less bulky than code that doesn't use it. However, it uses more memory since there is an extensive overhead since the function constantly updates and maintains the stack. 


# Implementing recursion in different programming languages.

Recursion basically works in a similar manner in different languages. However, since each language is unique, there are differences in how recursion is applied. Let's look at how each language implements it using a similar example. 

## Recursion in JavaScript

In JavaScript, the syntax for a recursive function is as shown below;

```JavaScript
function recurse() {
if(condition) {
// stop calling itself
} else {recurse();
}
}
```

Let's see it in a practical example. The program is designed to count down numbers to 1. 

```JavaScript
function countDown(number) {
console.log(number);
// displays the number

const newNumber = number - 1;
// subtracts one from the number

if (newNumber > 0) {
countDown(newNumber);
}
}
// the base case

CountDown (4);
// output is
// 4
// 3
// 2
// 1
```

In the above JavaScript program, you pass the number as an argument when calling the function. The value of the number reduces by **1.** The function `countdown()` is called until the base function `newNumber > 0` reaches **0** and terminates the function. 


## Recursion in Python

`Python` also uses recursion to write efficient and mathematically elegant code. The syntax for `Python` recursive functions is as shown;

```Python
def func():
 if condition: 
# stop calling itself

else: 
# recurse

func= 
```
Below is a `Python` program for the example we are using. 

```Python
def tri_recursion (k):
if (k>0): 
result = k+tri_recursion(k-1)
print(result)
else:
result=0
return result

print("\n\nRecursion Example Results")
tri_recursion(4)

# Output will be
# 4
# 3
# 2
# 1
```

The function runs itself until the number gets to zero and terminates the program. 

## Recursion in C++

Similar to other programming languages, recursion in `C++` works by calling itself over and over again. Its syntax is as shown below;

```cpp
void recurse()
{ if (condition) {
# base case

return;
}
else {
}}
# recursive case
  
```
Now let's see it in a practical example;

```cpp
#include <iostream>

void display(int n) {
  if (n == 0) {
    return;
  }
  std::cout << n << std::endl;
  display(n - 1);
}

int main() {
  display(5);
  return 0;
}

# The output is
# 5
# 4
# 3
# 2
# 1
```

### Conclusion

Recursion is an essential skill that assists in reducing the bulk of the codebase while increasing the ease of writing and reading code. However, you need to be careful when using recursion since there is a risk of infinite loops and programs that use too much memory and processing power. 

I hope you have learnt something from the article. Find me on twitter [@devdenis_](https://twitter.com/devdenis_). Thanks for reading.