Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当我用-->;调用此递归函数时;乘([1,2,3,4,5],3),我得到NaN。背后的原因是什么?_Javascript - Fatal编程技术网

Javascript 当我用-->;调用此递归函数时;乘([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

当我用-->乘法([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<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