Example #1
0
        public static int Sum(Stack <int> intStack)
        {
            var recursiveTailSum = Trampoline.MakeTrampoline((int acc, Stack <int> ints) =>
            {
                var topInt = ints.Pop();
                var total  = topInt + acc;

                return(ints.Any()
                    ? Trampoline.Recurse <int, Stack <int>, int>(total, ints)
                    : Trampoline.ReturnResult <int, Stack <int>, int>(total));
            });

            return(recursiveTailSum(0, intStack));
        }