0
그래서 나는 내가 OCaml의 재귀로 번역하고 싶습니다이 while 루프 개념이 있습니다OCaml의에서 재귀 함수를 만들려고 노력
의사 코드 :
n = read integer from stdin
m = 1
while m*(m+1)/2 < n
m = m + 1
print m
OCaml의 나의 시도 :
를let n = int_of_string (input_line stdin) in
let rec get_ans m n =
if m*(m+1)/2 < n then get_ans (m + 1) n else m;;
print_endline get_ans 1 n;
그러나 내가 잘못하고있는 것에 대한 자세한 내용없이 긴 함수 줄에는 "구문 오류"가 나타납니다.
두 가지 방법 중 어느 것이 바람직한 방법입니까? 나는 OCaml을 처음 접했으므로 이중 언어를 완전히 이해하지 못했다; in-thing과 모든 것 - 나는 어느 것을 고집해야합니까? – user8926565
첫 번째 예제가 두 개의';;'와 반대로 하나의'; '로 끝나는 이유는 무엇입니까? – user8926565
방금 놀고 있다면 두 형식 모두 괜찮습니다. 실제 프로젝트에서는 stdin을 전역 변수로 읽지 않아야합니다. 'print_endline ... '에서'let() = let n = ... in'을 사용하여 일종의'main' 함수를 정의하지만'get_ans' 함수를 최상위 선언으로 유지하는 것은 통상적입니다 – glennsl