rsp/node-tco

View on GitHub
example2.js

Summary

Maintainability
A
2 hrs
Test Coverage

var tco = require('./index');

// normal recursive function:

var neven = function (n) {
    if (n == 0) return true;
    else return nodd(n - 1);
};
var nodd = function (n) {
    if (n == 0) return false;
    else return neven(n - 1);
};

// tco recursive function:

var teven = tco(function (n) {
    if (n == 0) return [null, true];
    else return [todd, [n - 1]];
});
var todd = tco(function (n) {
    if (n == 0) return [null, false];
    else return [teven, [n - 1]];
});

// helper function to check for errors:

function run(f, num, t) {
    try {
        console.log(t+' for '+num+':');
        console.log(f(num));
    } catch(e) {
        console.log(e);
    }
}

// run both functions:

var n = 10000000;
run(neven, n, 'normal recursion');
run(teven, n, 'tco recursion');