2013-01-06 3 views
4

OCaml에 대해 조금 배우고 싶습니다. C++과 Java 이외의 프로그래밍 언어를 맛보기 위해서입니다. 다음 프로그램을 통해 나를 돕는다면 매우 유용 할 것입니다. 기본적으로 사용자는 양의 정수를 입력합니다. N에서 0까지의 모든 정수의 합계가 인쇄됩니다.간단한 OCaml 프로그램

분명히 정수 N을 만들고 사용자가 그 값을 입력하게하십시오. 변수 sumint 유형으로 만듭니다. for 루프를 가지고 Nsum에 추가 한 다음 N의 값을 1만큼 감소시킵니다. 루프는 N이 1보다 큰 동안 실행될 것입니다. OCaml의 구문에서 이것을 어떻게 수행해야할지 모르겠습니다.

도움을 주시면 감사하겠습니다.

답변

9

알고리즘을 설명하는 방법은 일반적으로 C++ 또는 Java에서 구현하는 방법입니다.

let rec print_sum acc n = 
    if n <= 0 
    then Printf.printf "Sum: %d\n" acc 
    else print_sum (acc + n) (n - 1) 

호출을 함께 : print_sum 0 11 ;;

재귀 함수를 작성하려면 다음과 같이, 당신은 그것을 OCaml의에서 같은 방법을 쓸 수 있지만, 관용적 인 방법은 변수를 변이하지 않는 재귀 함수 것

  1. 재발 할 필요가 없을 때 먼저 기본 사례를 생각해보십시오. 이렇게하면 잊지 못할 것입니다. (여기, 그것의 경우입니다.)
  2. 일반적인 경우 : 이미 작성된 기본 케이스에 한 걸음 더 가까이 다가 갈 수 있습니까? 여기서는 n-1으로 함수를 호출합니다.
+0

대단히 감사합니다. 이것은 내가 필요한 대답이었다! – Bloodcount

+0

다음은 팽창이 적은 솔루션입니다. let print_sum n = print_int (n * (n + 1)/2) – rgrinberg