听到的是我的代码。我需要在不使用函数名称的情况下完成这项工作。 虽然函数不能命名,但它们可以作为参数传递给另一个函数。
而且我不想使用 arguments.callee。
谁能帮帮我。
其实这是我的任务。我需要在匿名函数中进行递归。而且我不能使用任何函数名称。但我可以将函数名称作为参数传递给另一个函数。 有没有办法替换arguments.callee。
var n=5; // The result should be 15
console.log((function sum(n) {
if (n ==0)
return n;
else
return n + sum(n-1);
})(n));
最佳答案
您可以将代码包装在一个匿名函数中,您可以在其中声明一个命名函数:
console.log((function(n){
function fib(n) {
if (n == 0) {
return n;
} else {
return n + fib(n - 1);
}
}
return fib(n);
})(n));
如果你想完全不使用命名函数,只是通过将函数作为参数传递给函数设置名称,那么你必须在每次调用时发送函数引用:
console.log((function(f, n){
return f(f, n);
})(function(f, n) {
if (n == 0) {
return n;
} else {
return n + f(f, n - 1);
}
}, n));
关于javascript - 通过匿名函数进行递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27473450/