ocaml - Ocaml中的反向数组
问题描述
我在 OCaml 中写了这个来反转数组,就像我通常在 Java 中所做的那样:
let reversearray array = let len=Array.length array in
for i=0 to (len/2) do
let temp = array.(i) in
array.(i) <- array.(len-i-1);
array.(len-i-1) <- temp done;
array;;
但是,有时当有偶数数组时,这似乎不起作用。
# let a2 = [|"a"; "b"; "c"; "d"; "e"; "f"|];;
val a2 : string array = [|"a"; "b"; "c"; "d"; "e"; "f"|]
# reversearray a2;;
- : string array = [|"f"; "e"; "c"; "d"; "b"; "a"|]
有人可以解释什么是错的吗?
解决方案
假设长度为 2。您的 for 循环正在执行 i = 0 和 1。这会将元素反转两次。
通常人们会用受 C 语言影响的语言编写循环,如下所示:
for (i = 0; i < len/2; i++)
这仅对 i = 0 执行,这是正确的。OCaml 对包括上限值在内的所有值执行循环。
推荐阅读
- python - 程序在 Pycharm 调试器中崩溃,但不是在常规 Pycharm 运行中
- ios - 过滤领域的查询
- html - html 网站在不同的分辨率(如 mac 等)上重叠和混乱
- python - discord.py : bot.wait_for() 拦截 message.add_reaction() 并工作一次
- python - 使用没有嵌入的 LSTM 层
- regex - 有没有办法在 Scala 中将一个正则表达式的值嵌入到另一个正则表达式中?
- tensorflow - 使用具有多类的 tensorflow 模型绘制 ROC 曲线
- c# - 如果从 SQL SERVER 2014 数据库中获取位数据类型,Dapper 总是返回 false
- android-studio - 具有相似样式的多个按钮的单个 xml
- sql - Postgres:无法从表中删除某些行。表未锁定。表不在事务中