summaryrefslogtreecommitdiff
path: root/Algorithms/facttail.c
blob: c150a05991923a24ca5c9fa6977ef812ff5e1dcc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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;
}