這些簡單的功能尾遞歸我有這兩個功能如何在F#
//Remove all even indexed elements from a list and return the rest
let rec removeEven l =
match l with
| x0::x1::xs -> x1::removeEven (xs)
| [] -> []
| [_] -> []
//combine list members into pairs
let rec combinePair l =
match l with
| x0::x1::xs -> (x0,x1) :: combinePair(xs)
| [] -> []
| [_] -> []
這項工作。
但是我現在認爲我是在這樣做的,我不妨學習一些關於尾遞歸的知識,我很難掌握它。
這就是爲什麼我認爲如果我可以幫助某些功能做出自己的尾遞歸,或許它會變得更清楚它是如何工作的,而不是閱讀一個我可能不瞭解的例子,代碼(記住,我是一個完整的f#新手:))
任何其他有關我的代碼的建設性意見當然是最受歡迎的!
我認爲這是正確的。 這是應該刪除偶數索引,而不是偶數值的元素,在這種情況下1有索引0和2有索引1 – PNS 2012-02-21 18:16:45
爲什麼'removeEven [1; 2]'return'[2]'?我在我的答案中複製了它的行爲,但它似乎應該被稱爲'returnEven'或'removeOdd'什麼的。 – Daniel 2012-02-21 18:18:52
抱歉刪除我的評論。我改寫了它。所以_even_是指索引?好的。 – Daniel 2012-02-21 18:19:46