diff options
Diffstat (limited to 'Algorithms/facttail.c')
| -rw-r--r-- | Algorithms/facttail.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/Algorithms/facttail.c b/Algorithms/facttail.c new file mode 100644 index 0000000..c150a05 --- /dev/null +++ b/Algorithms/facttail.c @@ -0,0 +1,37 @@ +/* + * Tail recursion + * + * Implements a factorial function using tail recursion instead of regular + * recursion + */ + +#include <stdio.h> + +int facttail(int n, int cur) { + + if (n < 0) + return 0; + + switch (n){ + case (0): + return 1; + break; + case (1): + return cur; + break; + default: + facttail(n - 1, cur * n); + } +} + +int main(void) { + int a = 3; + int b = 1; + int res = 0; + + res = facttail(a, 1); + + printf("Res: %d\n", res); + return 0; +} + |
