一个简单的OCaml程序

Sta*_*ovv 4 ocaml

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

显然你创建了一个整数N,让用户输入它的值.创建一个sum类型的变量int.有一个for循环,这将增加Nsum再递减N由一个人的价值.循环将在N大于1的情况下运行.我不知道如何在OCaml的语法中执行此操作.

任何帮助将受到高度赞赏.

Pas*_*uoq 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)
Run Code Online (Sandbox Code Playgroud)

调用: print_sum 0 11 ;;

编写递归函数:

  1. 首先想想没有必要递归的基本情况.这样可以避免忘记它(这里就是这种情况n <= 0)
  2. 一般情况:如何更接近已编写的基本案例?这是通过调用函数来实现的n-1.