4

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

显然你创建了一个 integer N,让用户输入它的值。创建一个sum类型的变量int。有一个for循环,它会加Nsum然后递减N的值。循环将在N大于 1 时运行。不过,我不知道如何在 OCaml 的语法中执行此操作。

任何帮助将不胜感激。

4

1 回答 1

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. 一般情况:如何才能更接近已经编写的基本情况?这是通过调用函数来实现的n-1
于 2013-01-06T11:10:19.190 回答