Как проверить, является ли вектор последовательностью чисел Фибоначчи - PullRequest
2 голосов
/ 28 октября 2019

Справочная информация: числа Фибоначчи - это серии чисел, в которых каждое число (число Фибоначчи) является суммой двух предыдущих чисел. Простой пример: 1, 1, 2, 3, 5, 8 и т. Д.

Я пытаюсь понять, как я могу определить, содержит ли вектор числа Фибоначчи или нет. Можно ли сделать это с помощью векторизованной операции (я имею в виду без использования цикла)?

1 Ответ

9 голосов
/ 28 октября 2019

После первого элемента различия между элементами в последовательности Фибоначчи должны быть последовательности. Итак, простое решение -

F1 = c(2,5,7,12,19,31)
F2 = c(2,5,7,12,18,31)

all(diff(F1)[-1]  == head(F1, -2))
[1] TRUE
all(diff(F2)[-1]  == head(F2, -2))
[1] FALSE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...