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

OCaml中能否在函数内使用assert语句?编译语法报错求解答

错误原因

OCaml 语法要求let/let rec定义函数时,等号右侧仅允许填写单个表达式。你添加的assert (n>=0)是独立的第一个表达式,后续的if分支逻辑是第二个独立表达式,不符合基础语法规则,因此会触发编译错误。

修复方法

在assert语句末尾添加单分号,将两个表达式串联为合法的表达式序列即可:

let rec fib n =
  assert (n >= 0);
  if n = 1
  then 1
  else
  n*(fib (n-1))
补充提示

你当前的代码逻辑实际是阶乘计算,并非斐波那契(fibonacci)数列逻辑。如果要实现斐波那契数列,可调整为如下逻辑:

let rec fib n =
  assert (n >= 0);
  if n < 2
  then 1
  else fib (n-1) + fib (n-2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:45:00