Javascript 函数返回未定义的。为什么?
这与HackerRank算法问题“”有关 这是我的密码:Javascript 函数返回未定义的。为什么?,javascript,algorithm,Javascript,Algorithm,这与HackerRank算法问题“”有关 这是我的密码: 功能袋鼠(x1,v1,x2,v2){ //完成此功能 如果(x2>x1&&v2>v1)返回“否”; 如果(x1>x2&&v1>v2)返回“否”; 如果(x1==x2){ 返回“是”; }否则{ 袋鼠(x1+v1,v1,x2+v2,v2); } } var结果=袋鼠(0,3,4,2); 控制台日志(结果)请了解第一个:D 递归调用需要调用自身,这意味着您需要返回kangaroo return kangaroo(x1+v1,v1,x2+
功能袋鼠(x1,v1,x2,v2){
//完成此功能
如果(x2>x1&&v2>v1)返回“否”;
如果(x1>x2&&v1>v2)返回“否”;
如果(x1==x2){
返回“是”;
}否则{
袋鼠(x1+v1,v1,x2+v2,v2);
}
}
var结果=袋鼠(0,3,4,2);
控制台日志(结果)代码>请了解第一个:D
递归调用需要调用自身,这意味着您需要返回kangaroo
return kangaroo(x1+v1,v1,x2+v2,v2);
这看起来是一样的:
function kangaroo(x1, v1, x2, v2) {
if(x2>x1 && v2>v1)return "NO";
if(x1>x2 && v1>v2)return "NO";
if(x1 == x2) return "YES";
return kangaroo(x1+v1,v1,x2+v2,v2);
}
但实际上,它可能会对尾部调用进行优化,因此运行速度要快得多,因为它是这样执行的:
function kangaroo(x1, v1, x2, v2) {
while(true){
if(x2>x1 && v2>v1)return "NO";
if(x1>x2 && v1>v2)return "NO";
if(x1 == x2) return "YES";
x1=x1+v1,x2=x2+v2;
}
}
return kangaroo(x1+v1,v1,x2+v2,v2)
您没有返回递归调用的结果,该调用可能重复