Перебор 2^30> чисел для рекурсии, вызовы 1000 рекурсий
Перебирать долго и возникают ошибки, поэтому есть ли панацея от этой болезни, но чтобы сохранить суть шаблонности выполнения этой задачи без поиска каких-то алгоритмов? Тот же перебор, но быстрее, без ошибок? Те же многочисленные рекурсии, но без ошибок?
"""Алгоритм вычисления значения функции F(n), где n — целое неотрицательное число, задан следующими соотношениями:
F(0) = 0;
F(n) = F(n − 1) + 1, если n нечётно;
F(n) = F(n / 2), если n > 0 и при этом n чётно.
Укажите количество таких значений n < 1 000 000 000 (~~2^30), для которых F(n) = 2."""
def F(n):
if n == 0:
return 0
else:
return F(n-1) + 1 if n % 2 else F(n//2)
c = 0
for n in range(100000000):
if F(n) == 2:
print(n)
c += 1
print('count of n:', c)
Заранее спасибо за ответ и извиняюсь за глупые вопросы. Желательно без сторонних библиотек, которые нужно скачивать.