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
添加回答
舉報