如何使这段代码尾递归?

时间:2012-04-27 15:44:19

标签: recursion tail-recursion

假设我在伪代码中使用了这个函数来反转列表:

def function reverse( list ) :
if ( empty(list) ) 
    return empty_list;
else 
    return append( 
        reverse( list(2, lenght) , 
                 list(1)));

此代码不是尾递归的; 我怎么能让它尾递归?

1 个答案:

答案 0 :(得分:-1)

请参阅:Tail Call

F#

let map f l =
    let rec loop acc = function
        | [] -> List.rev acc
        | x::xs -> loop (f x::acc) xs
    loop [] l

reversing a string