recursion - 如何使用递归函数将元素插入列表,然后在 Ocaml 中打印
问题描述
将项目附加到递归函数内的列表的正确方法是什么?
let () =
let rec main m l acc =
if (acc = 3) then
acc
else
if (m = 1) then
l := 1 :: !l
main (m - 1) l
else if (m = 2) then
l := 2 :: !l
main (m - 1) l
else
l := m :: !l
main (m - 1) l
in l = ref []
let main 10 l 0
List.iter (fun l -> List.iter print_int l) l
另一个例子:
let () =
let rec main m =
if (m = 3) then m
else
l := m :: !l;
main (m + 1) l
in l = ref []
let main 0 l
List.iter (fun l -> List.iter print_int l) l
我想将一个值附加到函数内的列表中,然后打印列表的元素。
解决方案
如果要打印 [1;2;...;10]:
let () =
let rec main m l =
if (m = 0) then
!l
else begin
l := m :: !l;
main (m - 1) l
end
in
let l = ref [] in
List.iter print_int (main 10 l); print_newline();;
或者没有参考更好
let () =
let rec main m l =
if (m = 0) then
l
else
main (m - 1) (m::l)
in
List.iter print_int (main 10 []); print_newline();;
但我不确定你想做什么......
推荐阅读
- python - TypeError:需要一个类似字节的对象,而不是'_io.TextIOWrapper'
- c - 为什么连续的 fget 接受输入但在循环打印时将其存储为不同的或空白数据?
- android - 如何在 Android 上的 RecyclerView 中使用 GridLayoutManager
- wordpress - 来自 API 的 Ninja Form 动态接收者 - Wordpress
- javascript - Google Script:如何使用文档模板显示图像而不是超链接
- python - 在异步函数(通道消费者)Django中从数据库中获取模型
- c# - 使用 C# winforms 在 datagridview 中定位工具栏位置
- r - 如何在 R 中绘制分段函数?
- node.js - 在 React 中通过 Axios 发布请求发送 JSON 时出错
- css - 更漂亮的添加尾随空格