Recursion
Recursive Function - either directly or indirectly calls itself
Serves as a tool to solve algorithms by reducing the original problem to a smaller problem (and reducing again…)
Example:int func1(int n) /*assumes n >= 0 */{ if (n == 0) return 1; return ( n * func1(n-1)); /* recursive call */}
void func2(void) /*assumes user input */{ int c; if ((c = getchar()) != ‘\n’) func2(); putchar(c);}