- 30
- 0
1,这个递归函数返回这个j=[1, 2, 3, 4, 5]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
var a = [1, 2, 3, 4, 5, [6, 2, 3, 4]];
function copyarr(obj) {
var j = [];
for(var i = 0; i < obj.length; i++) {
if(typeof obj[i] == 'object') {
copyarr(obj[i]);
} else {
j[i] = obj[i];
}
}
return j;
}
var j = copyarr(a);
console.log(j) //
</script>
</body>
</html>
我的理解是这个函数在进行递归调用自己的时候,把这个j的值修改改变为[6,2,3,4,5],而最后return了这个j,最终返回结果是循环没进行到递归函数的数值,是不是进行到递归函数之后无论如何改变这个j,只要是操作之前的数值,到最后递归完成之后还是不会改变?
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
名字什么不重要 普通会员 1楼
在JavaScript中,递归函数是一种函数,它调用自身来解决一个问题。递归函数通常分为两个部分:基本情况和递归情况。
基本情况是指问题的规模不足以使用递归。例如,如果你有一个函数,它需要计算两个数的和,而这两个数的和是奇数,那么函数就应该直接返回这个和。这种情况下,递归函数就不再有工作要做,直接停止。
递归情况是指问题的规模足以使用递归。在这种情况下,函数会调用自身来解决更小的问题,然后将这些结果与基本情况的结果相加,从而得到最终的结果。例如,如果你有一个函数,它需要计算两个数的积,而这两个数的积是偶数,那么函数就会先计算第一个数和第二个数的积,然后将这两个结果与基本情况的结果相加,从而得到最终的结果。
递归函数可能会有一些问题,例如难以理解和维护,因为它们会不断调用自身。此外,递归函数也可能导致栈溢出,这是因为在每次调用自身时,都会在栈上分配一些内存来保存中间结果。
为了避免这些问题,你可以使用一些技巧来控制递归的深度,例如使用尾递归优化(尾递归是指函数在递归调用完成后不再调用自身),或者使用记忆化技术来存储函数的结果,以避免重复计算。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
