2016-05-17 38 views
1

我建立一個程序追加和我對這段代碼需要諮詢:如何使用遞歸

skyff([H1|Ta],L1,L2,):- 
    skyff(Ta,L1,L22), 
    append(H1,L2,L22). 

更具體的 - 我想要做到的是追加H1到列表L2和進行遞歸調用(skyff(Ta,L1,L22)),其中L22是將H1附加到L2的結果。但我不確定我是否做得對? - 我沒有粘貼整個程序的代碼,因爲這只是我不確定的特定段落。

也許這應該是周圍的其他方法:

skyff([H1|Ta],L1,L2,):- 
     append(H1,L2,L22), 
     skyff(Ta,L1,L22). 
+1

「H1」應該是一個列表,還是隻是一個元素?換句話說,你是否希望新列表「L22」成爲一個列表,其中「H1」是第一個元素,「L2」是列表的其餘部分?因爲'append/3'正常運行在列表上,或者甚至更簡潔:'[H1 | L2] = L22'(你不需要'),所以你可以把它寫成append([H1],L2,L22) t需要'append/3')。 – lurker

回答

2

@lurker評論總是在點和啓發,讓我們回顧一下它

skyff([H1|Ta],L1,L2):- 
     skyff(Ta,L1,[H1|L2]). 

現在,沒有懷疑沒有更多的空間。 ..