Recursion means that a function is being called by itself repeatedly, until the base condition is reached. Conceptually it is very similar to a loop. Some problems can be solved with recursion very easily. You can do it in any programming language. There is a lesson about it in the C course. https://www.sololearn.com/learn/C/2930/
Tibor Santa , recursion can also be indirect when function a calls function b which then callls function a until a base case is reached. In this case it isnt expicitly calling itself but instead calling a functon that then calls it back.This can happen with more than two functions calling each other.
An interesting optimization and variation to the recursion logic is "Tail Recursion". Tail recursion can be implemented more efficiently than general recursion. When we make a normal recursive call, we have to push the return address onto the call stack then jump to the called function. This means that we need a call stack whose size is linear in the depth of the recursive calls. A recursive function is tail recursive when recursive call is the last thing executed by the function. Read more on these here: https://stackoverflow.com/questions/33923/what-is-tail-recursion https://www.geeksforgeeks.org/tail-recursion/ https://cs.stackexchange.com/questions/6230/what-is-tail-recursion