fun isfib(a) =
findfib(a,1,1)
and
findfib(b,x,y) =
val z = x + y
if b <= 1 then true
else if z > b then false
else if z = b then true
else fib(b,y,z)
我在程序中输入了一个输入,并递归地尝试找出这个输入是否是一个 fib 数字。我可以在 2 行的单独程序中计算 fib 的第 x 个位置。但是这种“输入,检查是否等于 fib,将 fib 设为无穷大或破产”的逻辑让我非常困惑。我还在第 7.1 行遇到错误,例如“用 ANDALSO 替换 AND”和“插入 ORELSE”,即 B<=1