【发布时间】:2019-12-30 12:19:00
【问题描述】:
我是 Javascript 的新手。目前我正在阅读 Marijn Haverbeke 的 Eloquent Javascript,我尝试编写一个从列表中生成数组的函数。有一个非常简单的方法可以通过循环来做到这一点:
function listToArray(list) {
let array = [];
for (let node = list; node; node = node.rest) {
array.push(node.value);
}
return array;
}
但是我想用递归的方式写这个。我试着这样说:
列表:
{
value: 1,
rest: {
value: 2,
rest: {
value: 3,
rest: null
}
}
}
功能:
function recursiveNth(list) {
let array = [];
if (list.rest == null) {
array.push(list.value);
return array;
} else {
array.push(list.value);
return recursiveNth(list.rest);
}
}
输出:
[3]
【问题讨论】:
-
您可以将
array作为参数移交给recursiveNth。否则,您会在每次调用时失去状态。
标签: javascript function recursion