榆树 - 循环
Elm 是一种函数式编程语言。Elm 使用递归概念作为传统循环结构的替代方案。
本章讨论递归的概念。
递归
一些计算机编程语言允许模块或函数调用自身。这种技术称为递归。
插图
在这个程序中,我们将看到如何使用递归来显示 hello 五次。
步骤 1 - 创建文件 Loop.elm
创建一个模块 Loop 并定义一个函数sayHello。函数 sayHello 接受一个整数值作为输入并返回一个字符串值。
module Loop exposing(..) //function signature sayHello:Int ->String //function implementation sayHello n = case n of 1 -> "Hello:1 " _ -> "Hello:" ++ toString (n) ++ " " ++ sayHello(n-1)
函数 sayHello 检查传递的参数是否为 1。如果参数为 1,则函数将返回,否则将创建一个字符串 Hello 并调用相同的函数。
步骤 2 - 从 REPL 调用 sayHello
从当前项目文件夹(Loop.elm 文件的位置)打开 elm REPL。
//import the module Loop > import Loop exposing(..) //invoke the sayHello function with parameter value as 5 > sayHello 5 "Hello:5 Hello:4 Hello:3 Hello:2 Hello:1 Hello:0 " : String >
插图
以下示例使用递归打印 n 个数字的总和。
> sumOfNos n =\ | if n==0 then 0 \ | else (n) + sumOfNos (n-1) <function> : number -> number1
在 elm REPL 中,我们创建了一个函数 sumOfNos,它接受输入数字并对从 0 到该数字的所有数字求和。
例如,如果我们将输入传递为 5 ,则将1+2+3+4+5相加,即15。
> ssumOfNos 5 15 : number
程序的输出如上所示。