Nous savons tous fibonacci série, lorsque k = 2.algorithme pour k-Fibonacci
i.e. .: 1,1,2,3,5,8,13
Mais c'est le 2-fibonacci. Comme cela, je peux compter le troisième fibonacci:
1,1,2,4,7,13,24
Et le 4-fibonacci:
1,1,2,4,8,15,29
... et ainsi se passe
Ce que je demande est un algorithme pour calculer un élément 'n' à l'intérieur d'une série de k-fibonacci.
Comme ceci: si je demande fibonacci(n=5,k=4)
, le résultat devrait être: 8
, c'est-à-dire le cinquième élément de la série 4-fibonacci.
Je ne l'ai trouvé nulle part web. Une ressource pour aider pourrait être mathworld
Quelqu'un? Et si vous connaissez python, je préfère. Mais sinon, n'importe quel langage ou algorithme peut aider.
Astuce Je pense que cela peut aider: Analysons la série k-fibonacci, où k sera vont de 1 à 5
k fibonacci series
1 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, ...
2 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...
3 1, 1, 2, 4, 7, 13, 24, 44, 81, ...
4 1, 1, 2, 4, 8, 15, 29, 56, 108, ...
5 1, 1, 2, 4, 8, 16, 31, 61, 120, ...
L'analyse, nous pouvons voir que le tableau [0: k] sur la série k-fibonacci est égale à la précédente série de fibonacci , et elle continue jusqu'à k = 1
ie (je vais essayer de montrer, mais je ne trouve pas la bonne façon de le dire):
k fibonacci series
1 1,
2 1, 1,
3 1, 1, 2,
4 1, 1, 2, 4,
5 1, 1, 2, 4, 8,
J'espère avoir aidé d'une manière ou d'une autre à résoudre ce problème.
[SOLUTION en python (si quelqu'un a besoin)]
class Fibonacci:
def __init__(self, k):
self.cache = []
self.k = k
#Bootstrap the cache
self.cache.append(1)
for i in range(1,k+1):
self.cache.append(1 << (i-1))
def fib(self, n):
#Extend cache until it includes value for n.
#(If we've already computed a value for n, we won't loop at all.)
for i in range(len(self.cache), n+1):
self.cache.append(2 * self.cache[i-1] - self.cache[i-self.k-1])
return self.cache[n]
#example for k = 5
if __name__ == '__main__':
k = 5
f = Fibonacci(k)
for i in range(10):
print f.fib(i),
@Amber, @Itay: merci pour les conseils. Tout algorithme pour résoudre cela? Je suis vraiment perdu sur ce problème. –
@ Gabriel - Pas vraiment sûr de ce que vous entendez par algorithme? Le calcul des nombres de fibonacci n'est pas vraiment complexe ... – Amber
J'ai trouvé du papier à ce sujet *** LA FORMULE GÉNÉRALISÉE DE BINET ***. Publié le lien dans ma réponse. –