J'ai fait diverses fonctions de la séquence de Fibonacci (Ruby)

Ecrire avec récursif simple

Absolument lent (car il se reproduit jusqu'à ce que n atteigne une profondeur de 0 ou 1).

def fib(n)
    return n if n == 0 || n == 1
    return fib(n - 1) + fib(n - 2)
end

Une petite récurrence ingénieuse

C'est récursif, mais ce que vous faites n'est pas très différent d'une instruction for. C'est juste une fonction récursive, donc si un super grand n est passé, la pile peut déborder.

def fib(n, a, b)
    return a if n == 0
    return fib(n - 1, b, a + b)
end

Écrire avec pour

Puisqu'il n'est pas récursif, le débordement de pile ne se produira pas ... Vous pouvez écrire magnifiquement en utilisant l'affectation fractionnée. Ceci est une mission partagée.

def fib(n)
    a, b = 0, 1
    n.times.each { a, b = b, a + b }
    a
end

Écrire avec une méthode de planification dynamique (mémo)

TODO Veuillez écrire à quelqu'un.

Recommended Posts

J'ai fait diverses fonctions de la séquence de Fibonacci (Ruby)
J'ai essayé de créer divers programmes de séquence de nombres tels que le numéro Koratz, le numéro Fibonatch, le numéro Triangle
[Ruby] J'ai créé un simple client Ping
J'ai fait une mort risquée avec Ruby
J'ai créé StringUtils.isBlank
J'ai commencé Ruby
J'ai fait un blackjack avec Ruby (j'ai essayé d'utiliser minitest)
J'ai créé une bibliothèque d'extension Ruby en C
J'ai fait un portfolio avec Ruby On Rails
J'ai créé mon propre outil Instagram automatique [Ruby]
[Ruby] J'ai fait un robot avec de l'anémone et du nokogiri.
Diverses opérations sur les chaînes Ruby
J'ai mis à jour mon propre blackjack réalisé avec Ruby pour mon portfolio
Je veux implémenter diverses fonctions avec kotlin et java!