27 lines
531 B
JavaScript
27 lines
531 B
JavaScript
function Y(f) {
|
|
var g = f((function(h) {
|
|
return function() {
|
|
var g = f(h(h));
|
|
return g.apply(this, arguments);
|
|
}
|
|
})(function(h) {
|
|
return function() {
|
|
var g = f(h(h));
|
|
return g.apply(this, arguments);
|
|
}
|
|
}));
|
|
return g;
|
|
}
|
|
|
|
var fac = Y(function(f) {
|
|
return function (n) {
|
|
return n > 1 ? n * f(n - 1) : 1;
|
|
};
|
|
});
|
|
|
|
var fib = Y(function(f) {
|
|
return function(n) {
|
|
return n > 1 ? f(n - 1) + f(n - 2) : n;
|
|
};
|
|
});
|