Это итеративный вариант расчета ряда Фибоначчи в Python:Анализ сложности кода (Фибоначчи серии)
def fib_iterative(n):
if n == 0:
return []
if n == 1:
return [1]
if n == 2:
return [1,1]
fib_list = [1,1]
for i in range(0,n):
fib_list.append(fib_list[i]+fib_list[i+1])
return fib_list
Это рекурсивная версия:
def fib_recursive(n):
if n == 1:
return 1
elif n == 2:
return 1
else:
return fib_recursive(n-1) + fib_recursive(n-2)
def fib_numbers_in_list(n):
fibn = []
for x in range(1,n+1):
fibn.append(fib_recursive(x))
return fibn
Что такое Big-О каждый?
Звонки - это fib_numbers_in_list (n) и fib_iterative (n), чтобы возвращать первые n чисел Фибоначчи в списке.
Есть ли способ, которым мы можем найти алгоритм O (log n) для создания n чисел Фибоначчи?
Вы должны это выяснить сами. SO не решает задачу других. –
Я не вижу рекурсии во втором примере, это немного похоже на * confused *. , , –
Это код, который я написал. Я немного смущен, что, когда я запускаю вторую версию с n = 50, интерпретатор python останавливается. Принимая во внимание, что первая версия: она дает выход как можно скорее. Просто хотелось поразмышлять о Big-O @NeilSlater Во второй версии n-й номер Фибоначчи вычисляется с использованием рекурсии, а затем вторая функция добавляет их в список по порядку. –