一个简单的OCaml程序

时间:2013-01-06 10:13:34

标签: ocaml

我想学习一点OCaml,只是为了尝试除C ++和Java之外的编程语言。如果你帮助我使用以下程序,我将非常感激:基本上用户输入一个正整数。打印从N到0的所有整数之和。

显然你创建了一个整数N,让用户输入它的值。创建类型为sum的变量int。设置for循环,将N添加到sum,然后将N的值减1。当N大于1时,循环将运行。我不知道如何在OCaml的语法中执行此操作。

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:9)

您描述算法的方式是通常如何在C ++或Java中实现它。你可以在OCaml中以相同的方式编写它,但惯用的方法是一个不会改变变量的递归函数,如下所示:

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 ;;

编写递归函数:

  1. 首先想到没有必要递归的基本情况。这样可以避免忘记它(这里是n <= 0}
  2. 的情况
  3. 一般情况:你怎么能更接近已编写的基本案例?这是通过使用n-1调用函数。