if-then-else 语句的语法错误?

Syntax error with if-then-else statement?

我正在 OCaml 中制作算法(应该打印金字塔)。但是,我的 if-then-else 语句 运行 出现了语法错误:第一个 else 触发了语法错误。这可能是我犯的一个愚蠢的错误,但我终究无法解决它。

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

你应该在你的陈述中加上括号

print_string (a) ; build_line_pyramid (m - 1) n (a,b)

喜欢

( print_string (a) ; build_line_pyramid (m - 1) n (a,b) )

因为你的尾随 ';'优先于您的 'else' 声明。从而关闭您的 if 语句。