第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這個遞歸代碼如何改變我的列表?

這個遞歸代碼如何改變我的列表?

qq_花開花謝_0 2022-11-02 10:01:48
我嘗試在 IntellIj 中運行和調(diào)試以下代碼,以跟蹤我的代碼的每一行的作用,但我仍然不明白結(jié)果。public static void testMyFun() {    List<Integer> xs = new ArrayList<Integer>();   for (int i = 0; i < 5; i++)     xs.add(i);    myFun(xs,2);  System.out.println(xs);  }   public static <A> void myFun (List<A> xs, int n) {    if (n > 0) {       A x = xs.get(0);      xs.remove(0);     xs.add(x);     myFun(xs, n-1);    } 我得到的結(jié)果是 [ 2,3,4,0,1] 0 和 1 如何到達(dá)列表的末尾?
查看完整描述

5 回答

?
米脂

TA貢獻(xiàn)1836條經(jīng)驗 獲得超3個贊

在您的代碼中執(zhí)行myFun({0,1,2,3,4},2);.

這執(zhí)行myFun({1,2,3,4,0},1);.

下一個執(zhí)行的 myFun 是myFun({2,3,4,0,1},0);,它立即停止。

這是因為您刪除了第一個元素并將其添加到末尾(add()將其附加到末尾)


查看完整回答
反對 回復(fù) 2022-11-02
?
胡子哥哥

TA貢獻(xiàn)1825條經(jīng)驗 獲得超6個贊

出色地


A x = xs.get(0);  


xs.remove(0); 


xs.add(x); 

將第一個元素移動到最后一個位置


if (n > 0) {  

盡管n is > 0


你從


myFun(xs,2);

并由于以下原因遞歸調(diào)用 N 次myFun(xs,n-1);


所以你將 2 第一個元素移動到數(shù)組的末尾


查看完整回答
反對 回復(fù) 2022-11-02
?
米琪卡哇伊

TA貢獻(xiàn)1998條經(jīng)驗 獲得超6個贊

函數(shù)“myFun”從列表中刪除 n 個元素,然后將它們再次添加到列表中。add 方法將元素添加到列表的末尾。因為您發(fā)送了 n=2 。myFun 將從列表的“頭”中刪除 0,1,然后移動到列表的末尾。



查看完整回答
反對 回復(fù) 2022-11-02
?
桃花長相依

TA貢獻(xiàn)1860條經(jīng)驗 獲得超8個贊

因為您已將n設(shè)置為 2。所以基本上 myFun() 最多會執(zhí)行兩次。myFun() 正在刪除列表的第一個元素并將其重新添加到后面。由于這只能發(fā)生兩次,因此前兩個元素(0 和 1)將被發(fā)送到列表的后面。



查看完整回答
反對 回復(fù) 2022-11-02
?
守著一只汪

TA貢獻(xiàn)1872條經(jīng)驗 獲得超4個贊

原始列表值:

01234

當(dāng) n =2 列表修改為

12340

當(dāng) n=1 列表修改為

23401

當(dāng) n 達(dá)到 0 時,遞歸將停止。并且列表中的項目當(dāng)前順序?qū)⑹?/p>

23401


查看完整回答
反對 回復(fù) 2022-11-02
  • 5 回答
  • 0 關(guān)注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號