MyTetra Share
Делитесь знаниями!
Отрицательный фибоначчи
Время создания: 16.09.2017 10:26
Текстовые метки: task
Раздел: Haskell - Задачи - Пораничные условия
Запись: xintrea/mytetra_db_mcold/master/base/1505546811ymydl9m1tj/text.html на raw.githubusercontent.com

Последовательность чисел Фибоначчи 0,1,1,2,3,5,8,13,21,…0,1,1,2,3,5,8,13,21,… легко определить рекурсивно, задав два первых терминирующих значения и определив любое последующее как сумму двух непосредственно предыдущих:


F0=0F0=0 

F1=1F1=1 

Fn=Fn1+Fn2Fn=Fn−1+Fn−2 

На Haskell данное определение задаётся следующей функцией:

fibonacci 0 = 0

fibonacci 1 = 1

fibonacci n = fibonacci (n - 1) + fibonacci (n - 2)


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

F1=1,F2=1,,F10=55,F−1=1,F−2=−1,…,F−10=−55,… 

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


fibonacci :: Integer -> Integer

fibonacci n | n == 0 = 0

| n == 1 = 1

| n > 0 = fibonacci (n - 1) + fibonacci (n - 2)

| n < 0 = fibonacci (n + 2) - fibonacci (n + 1)

 
MyTetra Share v.0.65
Яндекс индекс цитирования