2011-11-01 104 views
0

列表&整數n。函數應添加列表的第n個元素,並返回其餘列表。例如sml列表參數函數遞歸

insertnth([5,6,7],2,9); 輸出:[5,9,6,7]

n是2。 9是我添加第二行

回答

2

嚴重的是,lutzlover。你需要閱讀一本教科書或SML的一些介紹。例如,請參閱SML/NJ Literature頁面。

基本上你有兩種解決這個問題的方法。給定函數insertnth(xs, pos, n),那麼醜陋的非功能性方式是在位置pos處拆分列表,然後返回left @ n :: right,其中leftright是拆分的左側和右側部分。或者更具功能性的方法,用遞歸函數逐個遍歷列表xs,每次遞減pos變量,然後當您到達位置1時,然後返回n附加到剩餘列表,以停止遞歸。

+0

我有。 fun insertnth(h :: t,1)= t | insertnth(h :: t,n)= h :: insertnth(t,n-1);是這樣嗎? – Knaas

+0

那麼您需要至少三個參數,就像您在原始問題中所做的那樣,並且正如我所做的那樣:'insertnth(xs,pos,n)'。除此之外,你幾乎在那裏 –

+0

:S我沒有完全做到 – Knaas