LINUX.ORG.RU

ЖЖ (вычисление чисел фибоначчи)

 , ,


1

1

Привет! Только что написал такой код:

#!/usr/bin/python3
def fibs (n): 
	if n==0:
		return 1
	elif n<0:
		return False
	init=[0,1]
	for i in range(1, n+1):
		sum= init[0] + init[1]
		init[0] = init[1]
		init[1]= sum
	
	return init[1]


a= fibs(5)
print(a)

А какие еще варианты функции, вычисляющей числа Фибоначчи приходят вам в голову?

★★

Последнее исправление: alpha (всего исправлений: 1)
fibs = (n) => {
    let a = 0;
    let b = 0;
    let c = 1;
    let i = 1;
    while (i < n) {
        ++i;
        a = b;
        b = c;
        c = a + b;
    }
    return c;
}

console.log(fibs(6));

помнится давно я для себя тестировал разные способы и такой способ самый быстрый оказался ЕМНИП

romanlinux ★★★
()
Последнее исправление: romanlinux (всего исправлений: 2)
Ответ на: комментарий от beastie

Traceback (most recent call last): File «<pyshell#0>», line 1, in <module> import fibonacci ModuleNotFoundError: No module named 'fibonacci'

XoFfiCEr ★★☆☆
()
Ответ на: комментарий от romanlinux

самый быстрый

Нет, этот метод имеет сложность O(N^2), потому что производится N итераций с большими числами, которые к концу алгоритма имеют количество цифр пропорциональное N.

Существуют методики вычисления, которые делают O(logN) операций, и поэтому имеют сложность O(N*logN).

upd. Скорее всего, там будет O(N*logN*logN*loglogN), но это не столь важно.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.