5 回答

TA贡献1836条经验 获得超3个赞
在您的代码中执行myFun({0,1,2,3,4},2);
.
这执行myFun({1,2,3,4,0},1);
.
下一个执行的 myFun 是myFun({2,3,4,0,1},0);
,它立即停止。
这是因为您删除了第一个元素并将其添加到末尾(add()
将其附加到末尾)

TA贡献1825条经验 获得超6个赞
出色地
A x = xs.get(0);
xs.remove(0);
xs.add(x);
将第一个元素移动到最后一个位置
if (n > 0) {
尽管n is > 0
你从
myFun(xs,2);
并由于以下原因递归调用 N 次myFun(xs,n-1);
所以你将 2 第一个元素移动到数组的末尾

TA贡献1998条经验 获得超6个赞
函数“myFun”从列表中删除 n 个元素,然后将它们再次添加到列表中。add 方法将元素添加到列表的末尾。因为您发送了 n=2 。myFun 将从列表的“头”中删除 0,1,然后移动到列表的末尾。

TA贡献1860条经验 获得超8个赞
因为您已将n设置为 2。所以基本上 myFun() 最多会执行两次。myFun() 正在删除列表的第一个元素并将其重新添加到后面。由于这只能发生两次,因此前两个元素(0 和 1)将被发送到列表的后面。

TA贡献1872条经验 获得超4个赞
原始列表值:
01234
当 n =2 列表修改为
12340
当 n=1 列表修改为
23401
当 n 达到 0 时,递归将停止。并且列表中的项目当前顺序将是
23401
添加回答
举报