Lipetsk *nix Association Forum Lipetsk *nix Association Forum
Новости:
 
*
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
28 Сентября 2024, 06:12:15


Войти


Страниц: 1 ... 3 4 [5] 6   Вниз
  Печать  
Автор Тема: Программирование под linux  (Прочитано 83436 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
konsoletyper
Новичек
*

Карма: 0
Сообщений: 7


Награды
« Ответ #60 : 08 Марта 2008, 22:04:37 »

Мастер! Что еще сказать.... Я хаскелл так и не осилил Грустный пока перебиваюсь быдлоскалой...

P.S. Маленькое замечание, первым элементом списка должен быть 0.

Нет, 1 :-)

Можно мелкий вопрос?:
fib = 0 : 1 : [a + b | (a, b) <- zip fib (tail fib)] - первые два элемента заданы явно, а третий и последующие как сумма a и b, где а и b берутся из конца списка. Я правильно понял? И еще, где указывается что нужно брать ДВА последних элемента из списка (я имею в виду конструкцию tail fib)?

Конструкцию следует читать так: "список чисел Фибоначчи - это список состоящий из двух единиц, и далее - из сумм элементов списков чисел Фибоначчи и чисел Фибоначчи без первого элемента". Если попытаться вычислить это выражение, то станет понятно, почему данная конструкция работает.

Вот по аналогии сочинил список факториалов (вообще, его можно где угодно найти):

Код:
fac = 1 : [a * b | (a, b) <- zip fac [1..]]

Следует читать как "список факториалов - это список начинающийся с единицы, а далее - из произведений элементов списков факториалов и натуральных чисел". Вначале вычисляется первый элемент - 1. Затем - второй по list comprehension, как произведение первого элемента fac (который 1) и первого натурального числа, т.е. 1. Третий элемент - это произведение второго элемента списка fac (тоже 1) и второго натурального числа. И так далее.
Записан
Страниц: 1 ... 3 4 [5] 6   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2011, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM