【发布时间】:2021-05-30 05:52:39
【问题描述】:
我正在尝试使用 coq 定义斐波那契数。这是我的代码:
Fixpoint fibonacci (n:nat) : nat :=
match n with
| O => 1
| S O => 1
| S (S n') => fibonacci (S n') + fibonacci n
end.
我遇到了错误信息:
斐波那契的递归定义格式不正确。在环境中 fibonacci : nat -> nat n : nat n0 : nat n' : nat 递归调用 fibonacci 的主要参数等于“S n'”,而不是其中之一 以下变量:“n0”“n'”。递归定义是:“fun n : nat => 匹配 n 与 | S (S n') => 斐波那契 (S n') + 斐波那契 n | _ => 1 结束”。
我想知道为什么这是错误的。顺便说一句,在匹配的第三个子句中,我没有定义n'的属性(例如n':nat),那么n'的属性的默认值是什么?
提前致谢!
【问题讨论】: