Вася изучал сегодня на информатике тему "Рекурсия". После урока на дощечке

Вася изучал сейчас на информатике тему "Рекурсия". После урока на дощечке осталась такая функция (для условия на языке Pascal процедура):
на языке Python:
def f(n):
print('*')
if n gt; 2:
f(n - 1)
f(n - 2)
на языке Pascal:
procedure f(n: longint);
begin
writeln('*');
if n gt; 2 then begin
f(n - 1);
f(n - 2);
end;
end;
на языке C++:
int f(int n)
cout lt;lt; '*' lt;lt; endl;
if (n gt; 2)
f(n - 1);
f(n - 2);


Вася задумался над таким вопросом а какое наименьшее естественное число нужно поставить заместо n в вызов этой функции, чтоб было напечатано не меньше 2017 звездочек? Помогите ему выяснить ответ на этот вопрос.
В качестве ответа укажите одно естественное число.

Задать свой вопрос
1 ответ
Разыскиваем закономерность.
f(1) = f(2) = 1 звездочка
f(n) = 1 + f(n-1) + f(n-2) звездочек, n gt; 2

Составляем программку для подсчета
--haskell
main :: IO ()
f(1) = 1
f(2) = 1
f(n) = 1 + f(n-1) + f(n-2)
main = print([(x, f(x)) x lt;- [1, 2 .. 20]])

И получаем таковой вывод
[(1,1),(2,1),(3,3),(4,5),(5,9),(6,15),(7,25),(8,41),(9,67),(10,109),(11,177),(12,287),(13,465),(14,753),(15,1219),(16,1973),(17,3193),(18,5167),(19,8361),(20,13529)]

(16,1973),(17,3193) - т.е. 16 мало, а 17 теснее довольно
Ответ 17
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт