var arr = [] function fn(n) { if (n == 1) { return arr.push(n); }else { return arr.push(fn(n-1)) } } fn(100) console.log(arr)返回值为什么不是1-100
时间: 2024-02-10 13:05:09 浏览: 81
这是因为在代码中,`fn(n-1)` 的返回值是一个数组,而非数字。因此,每次调用 `fn()` 函数时,都会将一个包含数字的数组 `push` 到 `arr` 数组中,而不是单独的数字。因此,最后 `arr` 数组中的元素都是包含数字的数组,而非单独的数字。正确的代码应该是这样的:
```
var arr = []
function fn(n) {
if (n == 1) {
arr.push(n);
} else {
fn(n-1); // 递归调用
arr.push(n);
}
}
fn(100);
console.log(arr); // [1, 2, 3, ..., 100]
```
在这个代码中,我们将 `fn(n-1)` 的返回值改为了递归调用 `fn()` 函数,这样就可以将数字按照从小到大的顺序添加到 `arr` 数组中了。
阅读全文