2.24 n - й член последовательности Ван Эка
Рассмотрим последовательность
S
, состоящую из положительных целых чисел.
Первый член
S
равен 0. Есть ли ноль перед текущим нулем? Нет, поэтому последовательность равна (0, 0).
Для последнего числа (в данном случае для второго нуля) задается тот же вопрос: есть ли ноль перед текущим (вторым) нулем?
Да, поэтому последовательность равна (0, 0, 1).
И снова для последнего числа (1) задается вопрос: есть ли «единица» перед текущей единицей? Нет, значит, последовательность равна (0, 0, 1, 0).
И снова для последнего числа (0) задается вопрос: есть ли ноль перед текущим нулем? Да, поэтому последовательность равна (0, 0, 1, 0, 2) и т. д.
Проще говоря, последовательность подсчитывает количество шагов, необходимых для достижения первого запрошенного числа,
если следовать начиная с хвоста последовательности до запрошенного числа, и подсчет прекращается, когда обнаруживается искомое число.
Эта популярная последовательность называется последовательностью Ван Эка. Ее члены определяются рекурсивно, поскольку каждый следующий член вычисляется на основе предыдущих.
Ваша задача: написать функцию
find_nth_term_in_van_eck_sequence(n)
, которая принимает натуральное число
n
и возвращает n-й член последовательности Ван Эка.
В табл. 2.24 показаны ожидаемые результаты для некоторых входных данных.
Таблица 2.24. Некоторые ожидаемые результаты для задачи поиска n?го члена последовательности Ван Эка |
n |
Ожидаемый результат |
258 |
3 |
25 |
4 |
2 |
1 |
2089 |
0 |
Примеры
№ | Входные данные | Выходные данные |
1
|
258
|
3
|
2
|
2
|
1
|