我想学习一点OCaml,只是为了尝试除C ++和Java之外的编程语言。如果你帮助我使用以下程序,我将非常感激:基本上用户输入一个正整数。打印从N到0的所有整数之和。
显然你创建了一个整数N
,让用户输入它的值。创建类型为sum
的变量int
。设置for
循环,将N
添加到sum
,然后将N
的值减1。当N
大于1时,循环将运行。我不知道如何在OCaml的语法中执行此操作。
任何帮助都将受到高度赞赏。
答案 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 ;;
编写递归函数:
n <= 0
} n-1
调用函数。