Этот вопрос напрямую связан с StackOverFlow при подсчете цифр . Я поднял решение этого вопроса, и у меня есть два вопроса:
Сначала вот решение:
(defn num-digits-tail-recursion
([n count]
(if (= 0 n)
count
(recur (quot n 10) (inc count))))
([n] (num-digits-tail-recursion n 0)))
count — это отдельная функция для подсчета количества символов в строке. Правильно ли я предполагаю, что count разрешен как var, потому что он не находится в первой позиции списка?
count — это второй параметр, но я передаю только один параметр — число. Что особенного в синтаксисе функции, который начинается со списка, а не типичного вектора параметров
(defn test_fn [x y] (println x))
?
Редактировать:
Прошу прощения за неясность в исходном вопросе. Почему предоставление имени функции -- count -- не приводит к тому, что num-digits-tail-recursion ожидает второго параметра? Если я поставлю ([n x]...
вместо (n count]...
и вызову функцию с одним аргументом, я получу ошибку insuf arguments.