【发布时间】:2019-07-24 07:52:27
【问题描述】:
我对 OCaml 中递归函数的执行流程有疑问。这是场景:
我有两个递归函数,Concat 和 Reverse。反向调用 Concat。谁能解释当我提交列表时会发生什么 [1; 2; 3]?
let rec concat (l1,l2) =
match l1 with
[] -> l2
| (h::t) -> h::(concat (t,l2));;
let rec reverse (l: int list) =
match l with
[] -> []
| (h :: t) -> concat (reverse t, [h]);;
// Call
let list1 = [1; 2; 3] ;;
reverse list1 ;;
我知道这不是反转列表的最佳方式,但现在我只对两个递归函数如何相互工作感兴趣。
谢谢!
【问题讨论】: