# Recursive Functions

Recursive functions can be used in C and also in C++. A function is recursive, if it calls itself directly or indirectly through another function. Each time the recursive function is called, it begins over again. A new set of arguments and local variables are created on the stack. There will be one set of variables for each call. Because there is a set of variables for each call, the programmer must guard against permitting too deep a call for the available stack memory. In particular, care must be taken not to have an infinite call.

For example:

` int new_gcd(int numb1, int numb2) {    return (numb1 < 0)? (new_gcd(-numb1,numb2)):       ((numb2 == 0) ? numb1:       new_gcd(numb2 , numb1 % numb2)); } `

This function returns the greatest common divisor of the two numbers: numb1 and numb2. See NEWGCD.CPP

Another example of recursive functions is the following function:

` unsigned long factorial(int numb) {   return (numb==0) ? (1) :(numb * factorial(numb-1)); } `

This function will return the factorial of the number: numb. In mathematics we would represent this by numb!. A call to this function could be:

` int value = factorial(5); `

in which case value would be 120 that is 5!. In order to execute this call there would need to be 6 copies of numb created on the stack, one for each number 0 up to 5. However there will be only one copy of the function in memory. See NEWFACT.CPP