【问题标题】:How to make this code tail-recursive?如何使这段代码尾递归?
【发布时间】:2017-07-18 01:39:09
【问题描述】:

假设我有这个以伪代码形式反转列表的函数:

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

这段代码不是尾递归的; 我怎样才能让它尾递归?

【问题讨论】:

  • 不,这不是作业(否则我已将其标记为作业);我只是不确定尾递归是什么,我想在一个例子中看到它。它不是一种真正的语言,是我为了问这个问题而发明的一种伪语言..

标签: recursion tail-recursion


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    相关资源
    最近更新 更多