This is my current code:
const fn = parameter => {
// if, else ...
fn(X);
};
fn(0);
Now, I can\'t use this approach as I need to cal
JavaScript provides a great solution for recursive functions: named function expressions. Hence I would recommend to use that instead of an arrow function:
(function fn(parameter) {
// if, else ...
fn(x);
})(0);
First, let me put the disclaimer that Immediately-Invoked-Function-Expressions (IIFE) are considered bad practice in ES6, and this is tail-recursion and personally I would change it to a for loop.
but you can always do this I guess:
((x) =>{ const fn=(p)=>{
//whatever
fn(q)
}
fn(x)
})(0)
If you want to call recursive an lambda expression
or anonymous function
you need Y combinator. For more details you can read http://mvanier.livejournal.com/2897.html
For factorial it is like
var Y = (proc) => {
return ((x) => {
return proc((y) => { return (x(x))(y);});
})((x) => {
return proc((y) => { return (x(x))(y);});
});
};
var factorial = (fact) => {
return (n) => {
return (n === 0) ? 1 : n * fact(n-1);
};
};
console.log( Y(factorial)(5) );
For you code it will be like
const fn = (func)=> {
return (parameter) => {
// if else
func(X);
}
};
Y(fn)(0);