gpt4 book ai didi

ocaml 将整数放入列表

转载 作者:行者123 更新时间:2023-12-02 08:43:46 25 4
gpt4 key购买 nike

我是 ocaml 的新手,我的问题是如何在 ocaml 中获取整数的数字以及如何通过递归调用将它们放入列表中

OCaml function digits : int -> int list 以整数 n 作为参数,如果整数为正数,则返回 n 的数字列表,按照它们在 n 中出现的顺序即:

# digits 3124;;
- : int list = [3;1;2;4]


# let rec digits n =
if n >0 then digits(n/10)::[]
else [];;

最佳答案

如果您将 digits 直接写成递归函数,您会发现如果不在末尾反转整个列表或在末尾追加元素,就很难以正确的顺序打印数字当前列表(两种低效的方法)。

最好使用中间终端递归函数来完成:

let digits2 d =
let rec dig acc d =
if d < 10 then d::acc
else dig ((d mod 10)::acc) (d/10) in
dig [] d
;;

这里,dig 接受一个累加器,该累加器用于构建列表并传递给下一个递归调用并在最后作为一个整体返回(d< 的缺点除外)/ 这里)。这是编写终端递归函数时非常常见的模式。

习惯这种写作风格可能需要一点时间,但最终它会来的。在我看来,尝试重写像这样的简单函数是 self 训练的好方法。

关于ocaml 将整数放入列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14251431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com