You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OCaml打印金字塔算法if-then-else语句触发语法错误如何解决?

问题原因

OCaml的if-then-else语法要求then、else后只能跟随单个表达式,你当前的写法中then后直接跟了两个用分号连接的独立表达式,编译器会判定if分支在第一个分号处就结束了,后续的else找不到匹配的if,因此触发语法报错。

修复方法

将每个then后的多个表达式用begin ... end(OCaml社区推荐用于控制流场景,语义更清晰)或者圆括号包裹,合并为一个复合表达式即可,修复后的代码如下:

let rec build_line_pyramid m n (a,b) = 
  if m >= m/2 then 
    begin 
      print_string a; 
      build_line_pyramid (m - 1) n (a,b) 
    end
  else if n = 0 then 
    begin 
      print_string b; 
      build_line_pyramid m (n - 1) (a,b)
    end
  else if m >= 0 then 
    begin 
      print_string a; 
      build_line_pyramid (m - 1) n (a,b)
    end
  else 
    print_newline ()

内容的提问来源于stack exchange,提问作者Antithetical

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:57:04