我正在编写程序来计算贝尔数字,这是我在 OCaml 中的第一个大程序。我想在循环While中使用循环While,但是有语法错误。请改正。谢谢。
我正在使用网站http://try.ocamlpro.com/
let rec factorial n =
if n < 2
then 1
else
n * factorial(n-1)
let rec newton n k =
factorial n / (factorial k * factorial (n-k))
let bell = [|1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0|]
let i = ref 2
let k = ref 0
let x = ref 0
let z = ref 0
let s = ref 0
在这里你需要选择你想要计算的数字,例如 4
let n = ref 4
if !n != 0 || !n != 1 then
while !i <= !n do
while !k <= (!i-1) do
x := newton (!i-1) !k;
s := !s + (!x * bell.(!k));
k := !k + 1 ;
z := !k + 1
done
s:=0;
i:= !i + 1;
done
else
bell.(!n)<-1
- 应该使用 Num 来计算贝尔数,但我首先想让程序在 int 上运行