Как сделать так, чтобы моя рекурсивная функция для ряда Фибоначчи распечатывала любое число в ряду до предела (аргумент) - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь создать рекурсивную функцию в Python, которая принимает аргумент в качестве предела и распечатывает все числа в ряду Фибоначчи до этого предела. Например, если аргумент равен 5, вывод должен быть 1, 1, 2, 3, 5

def fib(n):
    """Returns fibonnaci series using recursion"""
    if n <= 1:
        return (n)
    else:
        return (fib(n-1) + fib(n-2))

Это дает мне только вывод 5 вместо всей серии

1 Ответ

0 голосов
/ 11 октября 2019

Пример рекурсивных фибоначчи до предела

def fib(limit, cache = None):
  if cache == None:
    cache = [1, 1]

  cache.append(sum(cache[-2:]))

  if cache[-1] > limit:
    # Done-- don't include last item in list
    #        since its over the limit
    return cache[:-1]
  else:
    # Extend cache with recursive call to 
    #        generate next fibonacci
    return fib(limit, cache)

# Test generation
for k in range(1, 10):
  print(k, fib(k))

Вывод

1 [1, 1]
2 [1, 1, 2]
3 [1, 1, 2, 3]
4 [1, 1, 2, 3]
5 [1, 1, 2, 3, 5]
6 [1, 1, 2, 3, 5]
7 [1, 1, 2, 3, 5]
8 [1, 1, 2, 3, 5, 8]
9 [1, 1, 2, 3, 5, 8]
...