你能帮忙吗,为什么我得到这个undefined
值而不是返回a
?
var a = 0;
var m = 888;
function sevens(m, a) {
if (m == 0) {
document.write("Amount of 8's is "+a+"<br>");
return a;
} else {
if(Math.floor(m % 10) == 8) {
a++;
sevens(Math.floor(m / 10), a);
} else {
sevens(Math.floor(m / 10), a);
}
}
}
document.write("in "+m + " " + "it is" + " " + sevens(m, a));
&#13;
提前谢谢。
答案 0 :(得分:4)
函数需要在else
语句中返回一些内容。像这样:
function sevens(m, a){
if(m == 0){
document.write("Amount of 8's is "+a+"<br>");
return a;
}else{
if(Math.floor(m % 10) == 8){
a++;
return sevens(Math.floor(m / 10), a);
}else{
return sevens(Math.floor(m / 10), a);
}
}
}
答案 1 :(得分:3)
执行returning
时,function call
recursion
不是if(Math.floor(m % 10) == 8){
a++;
return sevens(Math.floor(m / 10), a);
}else{
return sevens(Math.floor(m / 10), a);
}
,
return
如果您function
内没有undefined
任何内容,默认情况下它会返回var $els = $('#elem1, #elem2');
$els.toggle();
。并非在所有情况下。这取决于你调用特定函数的方式。
答案 2 :(得分:2)
也许你稍微改变了一下逻辑,因为如果在那个部分函数用return
完成,你不需要else部分。
另一项更改是将Math.floor
与余数运算符%
一起暂停。它总是返回一个整数值。
第三部分是将sevens
的调用移到if语句之外,因为无论如何都要调用它。
var a = 0,
m = 888;
function sevens(m, a) {
if (m == 0) {
document.write("Amount of 8's is " + a + "<br>");
return a; // exit function, rest
} // of function is else part
if (m % 10 == 8) { // % --> int
a++;
}
return sevens(Math.floor(m / 10), a); // return result of call
}
document.write("in " + m + " " + "it is" + " " + sevens(m, a));
答案 3 :(得分:0)
你忘了返回,否则,我重构了一下sevens函数,你可以在代码片段中运行。
var a = 0;
var m = 888;
function sevens(m, a) {
if (m === 0) {
document.write("Amount of 8's is " + a + "<br>");
return a;
}
if (Math.floor(m % 10) === 8) {
a += 1;
}
return sevens(Math.floor(m / 10), a);
}
document.write("in " + m + " " + "it is" + " " + sevens(m, a));