OCaml에 처음 100 개의 벨 번호를 계산해야하는 프로그램을 작성하고 있습니다. 이것은이 내 첫 번째 프로그램이다 OCaml의 벨 번호
let rec newton n k =
factorial n // (factorial k */ factorial (n-k))
let bell = Array.make 101 zero;;
bell.(0) <- one;;
bell.(1) <- one;;
let i = ref 2
let k = ref 0
let x = ref zero
let suma = ref zero
let n = ref 100
if !n != 0 || !n != 1 then
while !i <= !n do
while !k <= (!i-1) do
x := newton (!i-1) !k;
suma := !suma +/ (!x */ bell.(!k));
k := !k + 1
done;
bell.(int_of_num !k) <- (!suma);
suma:= zero;
k:=0;
i:= !i + 1;
done;;
bell.(int_of_num 20)
:
open Num
let one = num_of_int 1;;
let zero = num_of_int 0;;
계산 계승 :
let rec factorial n =
if n < 2
then one
else (num_of_int n) */ factorial(n-1)
계산 뉴턴 여기에 (내가 Num
모듈을 사용하고 있습니다) 내 코드입니다 언어. 나는 컴파일하는데 약간의 문제가있다.
예를 들어 구문에 대한 튜토리얼을 읽어야합니다. http://ocaml.org/learn/tutorials/. – Kakadu
보다 구체적으로'while' 루프를'for' 루프로 다시 작성할 수 있습니다. 당신은 항상 integer 변수를 증가시킵니다. 그래서 for 루프가 필요한 것입니다. – Kakadu
또한 오류 로그를 제공하여보다 구체적으로 문제를 지정해야합니다. 'let .. = ..'이 최상위 표현식으로'in'을 필요로하지 않는다는 것을 잊지 마십시오. 그러나'let'을'let' 안에 또 다른'let'을 사용하면'in' 키워드를 추가해야합니다. – Kakadu