Самоучитель Clojure Часть 3. Функции и циклы


Справка.

https://clojure.org/guides/repl/basic_usage#_evaluating_clojure_expressions

Официальный представитель Clojure


Создание функции добавления, которая добавляет 1

Сначала кратко о том, как использовать функции Clojure

( defn add [n]
  ( + n 1 )
)
Войдите в полноэкранный режим Выход из полноэкранного режима

По сравнению с JavaScript

  • В объявлениях функций вместо функции используется defn
  • Аргументы заключены в [] вместо ()
  • Обработка заключена в () вместо {}.

Вот эти различия.

#'user/add
user=> ( add 1 )
2
Войдите в полноэкранный режим Выход из полноэкранного режима

Закрытие () в декларации
Теперь функция отображается как созданная в текущем местоположении

и может использоваться в обычном режиме.


Выполните и проанализируйте пример факториального кода

https://clojure.org/guides/repl/basic_usage#_evaluating_clojure_expressions

Создание примера кода

(defn factorial [n]
(if (= n 0)
  1
  (* n (factorial (dec n))))
)

#'user/factorial
Войдите в полноэкранный режим Выход из полноэкранного режима

Факториал означает факториал.

Содержание следующее.

Вывод n x (n-1), но

Если аргумент n равен 0, установите n в 1.
Если аргумент n-1 является числом, то вышеприведенное выражение

Если аргумент n равен 0, установите n в 1

Этот процесс осуществляется.
После этого аргумент n-1 умножается на n.


Объяснение фактических числовых значений

user=> ( factorial 0 )
1
user=> ( factorial 1 )
1
user=> ( factorial 2 )
2
user=> ( factorial 3 )
6
user=> ( factorial 4 )
24
Войдите в полноэкранный режим Выход из полноэкранного режима

В случае 0

Замените на 1, так как n равно 0
Замените на 1, так как n-1 также равно 0
1 x 1 = 1

В случае 1

n равно 1, поэтому оставляем как есть
Замените на 1, так как n-1 равно 0
1 x 1 = 1

Повторите случай 0 и остановитесь при обнаружении бесконечного цикла.

Дело 2

n равно 2, поэтому продолжаем
n-1 равно 1, поэтому продолжаем
2 x 1 = 2

Повторите для 1 и 0 и остановитесь при обнаружении бесконечного цикла.

Дело 3

n — 3
n-1 — 2
3 x 2 = 6

Повторите для 2 и так далее
3 x 2 x 1 x 1 и так далее до конца.

4 и далее не требуют пояснений.


https://www.javadrive.jp/javascript/function/index15.html

JS также использовал знакомый рекурсивный вызов.

Каждый раз, когда я пишу о рекурсии, появляется господин Саеки.
Я думал, это был господин Саэки.

Это похоже на REPL — Loop of Read, Exe, Print, Loop.


Резюме

Clojure — это JS
функция, (), {},
вместо этих.
defn, [], (),
Они используются, но функции можно создавать так же, как и в JS.

вызывая себя во второй половине функции.
Расчет может включать результат перехода процесса в первую половину.

Оцените статью
Procodings.ru
Добавить комментарий