Вяз - Петля

Elm - это функциональный язык программирования. Elm использует концепцию рекурсии как альтернативу традиционным конструкциям циклов.

В этой главе обсуждается концепция рекурсии.

Рекурсия

Некоторые языки программирования позволяют модулю или функции вызывать себя. Этот метод известен как рекурсия.

Иллюстрация

В этой программе мы увидим, как использовать рекурсию для пятикратного отображения приветствия.

Step 1 − Create a file 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 и вызовет ту же функцию.

Step 2 − Invoke sayHello from REPL

Откройте elm REPL из папки текущего проекта (расположение файла Loop.elm).

//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

Результат программы показан выше.