js关于递归里的return
定义一个函数,该函数用于计算一个正数的因子和(比如6的因子和是1+2+3+6=12。因子就是能整除一个整数的整数。因子又叫“约数”。)varn=1;varsum=0;fu...
定义一个函数,该函数用于计算一个正数的因子和(比如6的因子和是1+2+3+6=12。因子就是能整除一个整数的整数。因子又叫“约数”。)
var n=1;
var sum=0;
function total(i)
{if (i%n==0)
{sum=sum+n;
}
n++;
if (n>i)
{
return sum;
}
我说的是这一行 return total(i);
}
var u=total(9);
document.write(u);
我想问的是,为什么我标记的那一行里,如果省去return,我上面的return sum出来的结果就会是undefined 展开
var n=1;
var sum=0;
function total(i)
{if (i%n==0)
{sum=sum+n;
}
n++;
if (n>i)
{
return sum;
}
我说的是这一行 return total(i);
}
var u=total(9);
document.write(u);
我想问的是,为什么我标记的那一行里,如果省去return,我上面的return sum出来的结果就会是undefined 展开
1个回答
展开全部
首先看题主的代码,按照要求,去掉函数中最后一个 return
首先 调用 total(9),这时 total中 i 的值为 9, 然后执行 if 条件 i % n == 0 (9 % 1 == 0),结果为true,进入执行 sum = sum+n,然后执行 n++ (n = 2);然后执行 if 条件 n > i ( 2 > 9),结果为 false,跳过 if, 执行下一步 total(i)
问题就出现在这里,执行第一层的时候 total 函数并没有返回值,当total 进入最后一层循环的时候,即便是返回了 sum, 因为前面的几层并没有返回,所以最后结果就会是 undefined
所以,想要最终有结果返回,即便是递归,也得保证层层有 return
更多追问追答
追问
那这在段函数中,我的return total(i)有什么意义呢?为甚么这样能够把sum值传给下一层呢?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询