Вяз - Петля
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
Результат программы показан выше.