Как запустить все числа Фибоначчи в генераторе питона - PullRequest
0 голосов
/ 23 января 2019

Итак, я создал функцию, которая по существу будет принимать значение в качестве параметра и запускать последовательность Фибоначчи. Это имеет тенденцию печатать только 1 каждый раз, когда я использую следующий. Я не уверен, почему он это делает. Когда он достиг ключевого слова yield, он возвращает значение 1. Пока мой код выглядит следующим образом:

def fibonacci(n):
    curr = 1
    prev = 0
    counter = 0
    while counter < n:
        yield curr
        prev, curr = curr, prev + curr
        counter += 1


print(next(fibonacci(10)))
print(next(fibonacci(10)))
print(next(fibonacci(10)))

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Вам необходимо создать экземпляр объекта вашего генератора перед его использованием, например:

g = fibonacci(10)

print(next(g))
print(next(g))
print(next(g))

вернет следующий вывод:

1
1
2
0 голосов
/ 23 января 2019

Вот одно решение, которое работает для меня:

def fibonacci(n):
    fibonacci_list = []
    curr = 1
    prev = 0
    counter = 0
    while counter < n:
        prev, curr = curr, prev + curr
        counter += 1
        fibonacci_list.append(curr)

    return fibonacci_list;


x = fibonacci(10)
print(x)

Скажите, помогло ли это

SLP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...