Javascript 当我用-->;调用此递归函数时;乘([1,2,3,4,5],3),我得到NaN。背后的原因是什么?
当我用-->乘法([1,2,3,4,5],3]调用这个递归函数时,得到NaN。背后的原因是什么Javascript 当我用-->;调用此递归函数时;乘([1,2,3,4,5],3),我得到NaN。背后的原因是什么?,javascript,Javascript,当我用-->乘法([1,2,3,4,5],3]调用这个递归函数时,得到NaN。背后的原因是什么 let multiply=函数(arr,num){ 如果(num,因为在上次调用中,num=0您试图访问arr[num-1],这是arr[0-1]=>arr[-1]=undefined。因此所有结果都变为NaN 您需要按照以下方式编写方法: let multiply=函数(arr,num){ if(num
let multiply=函数(arr,num){
如果(num,因为在上次调用中,num=0
您试图访问arr[num-1]
,这是arr[0-1]=>arr[-1]=undefined
。因此所有结果都变为NaN
您需要按照以下方式编写方法:
let multiply=函数(arr,num){
if(num<0){
返回1;
}
返回arr[num]*乘法([1,2,3,4],num-1);
}
console.log(multiply([1,2,3,4,5,3]);
num
可能是0
,因为您只检查num<0
,但num-1
则不是有效的数组索引。您希望对数组进行切片,而不是传递[1,2,3,4]在递归调用中。另外,请学习如何使用调试器。它将比编写问题更快地向您展示这一点,并且当出现更复杂的问题(每个人都会遇到)时,您需要能够更早或更晚地操作调试器。@Andreas修改输入列表对于这样的函数来说似乎不是一个好主意。您可以使用arr[num-1]
,但在if
中,您必须执行num<1
的语句,这也是正确的。很好的一点@sidc