Найти / сохранить первые 50 членов последовательности Фибоначчи с помощью цикла - PullRequest
2 голосов
/ 25 октября 2019

Я пытаюсь найти и сохранить первые 50 элементов последовательности Фибоначчи в массиве с помощью цикла. Я совершенно новичок в Python и не могу пройти этот этап, я очень расстроен, что не могу понять, как это сделать.

Мой код пока:

x=51
 def Fibonacci(x):
    First_Value=0
    Second_Value=1
    for i in range(x):
        Next_value = First_Value
        First_Value = Second_Value
        Second_Value = Next_value + Second_Value
    return Fist_Value"

Но я не могу понять, как напечатать это в массиве, где я должен показать первые 50 значений.

Ответы [ 3 ]

3 голосов
/ 25 октября 2019

Вы можете определить пустой список (или массив) в начале функции, а затем добавлять к нему на каждой итерации цикла for.

Вот пример

def Fibonacci(x):
    fib_array = [None]*x
    First_Value=0
    Second_Value=1
    for i in range(x):
        Next_value = First_Value
        First_Value = Second_Value
        Second_Value = Next_value + Second_Value
        fib_array[i] = First_Value
    return fib_array

Fibonacci(10)

Вывод

[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
2 голосов
/ 25 октября 2019

Ваш код можно изменить, чтобы он возвращал массив.

def Fibonacci(x):
   First_Value=0
   Second_Value=1
   Result = []
   for i in range(x):
       Next_value = First_Value
       First_Value = Second_Value
       Second_Value = Next_value + Second_Value
       Result.append(Next_value)
   return Result

print(Fibonacci(20))

Вывод:

[0, 1, 1, 2, 3, 5, 8, 13,21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181]

2 голосов
/ 25 октября 2019

Поскольку вы уже знаете, как генерировать числа Фибоначчи, одно из решений состоит в том, чтобы просто сгенерировать массив из вашей предопределенной функции:

result = [Fibonacci(x) for x in range(51)]

, но это совершенно неэффективно (вы все время пересчитываете числа Фибоначчи),Вы можете улучшить его, настроив свою функцию:

def Fibonacci(x):
    if x < 0:
        raise ValueError("Argument has to be a nonnegative integer")
    if x == 0:
        return []
    if x == 1:
        return [0]
    result = [0, 1]
    for _ in range(x-2, 0, -1):
        result.append(result[-1] + result[-2])
    return result

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