2011-11-01 115 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