Elm - 循环



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
>
module Loop

说明

下面的示例使用递归打印 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

程序的输出如上所示。

广告