我是JavaScript的新手。我想使用两个功能实现递归:一个公共,另一个私人。
在Java中,我总是像这样实现递归
public int sumOfPrevious(int n){
return addNumbers(n);
}
private int addNumbers(int n){
if (n == 1)
return 1;
else
return n + addNumbers(n-1);
}
然后调用 System.out.println(Sumofprevious(5))返回15
但是您如何在JavaScript中实现类似的东西?
我尝试了:
function sumOfPrevious(n){
return function privateFunc(n){
if (n == 1)
return 1;
else
return n + privateFunc(n - 1);
};
}
但是调用 console.log(sumofprevious(5))只给我 [function:privatefunc]
为什么这样做?我该如何解决?
您需要声明嵌套函数然后使用它,而不是返回嵌套功能。
function sumOfPrevious(n){
function privateFunc(n){
if (n == 1)
return 1;
else
return n + privateFunc(n - 1);
}
return privateFunc(n);
}
您正在返回定义的函数本身。
只需执行它:
function sumOfPrevious(n){
return (function privateFunc(n){
if (n == 1)
return 1;
else
return n + privateFunc(n - 1);
})(n);
}
JSFIDDLE的一个工作示例。
希望它有帮助。
您返回一个函数,以便获得功能...
要定义私有功能,您必须像在Java中一样创建一个类,然后在内部制作魔术
function MyClass() {
var idx = this;
var my_private_member = 5;
this.my_public_member = 0;
function my_private_function() {
idx.my_public_member = my_private_member; //keyword "this" here won't reference to MyClass, but to the private function, so we keep a reference of MyClass to be accessed by the private function
}
this.my_public_function = function() {
my_private_function();
}
}
var my_instance = new MyClass();
my_private_member
和my_private_function
无法访问
简单地将函数用于递归:
java和javascript是两个完全不同的东西。
function sumOfPrevious(n){
if (n == 1)
return 1;
else
return n + sumOfPrevious(n - 1);
}
// call the function
console.log(sumOfPrevious(10)); // 55