Ich habe verschiedene Funktionen der Fibonacci-Sequenz (Ruby) erstellt.

Schreiben Sie mit einfach rekursiv

Absolut langsam (weil es wiederholt wird, bis n eine Tiefe von 0 oder 1 erreicht).

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

Ein wenig geniales Wiederauftreten

Es ist rekursiv, aber was Sie tun, unterscheidet sich nicht wesentlich von einer for-Anweisung. Es ist nur eine rekursive Funktion. Wenn also ein super großes n übergeben wird, kann der Stapel überlaufen.

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

Schreiben Sie mit für

Da es nicht rekursiv ist, tritt kein Stapelüberlauf auf ... Sie können schön schreiben, indem Sie die geteilte Zuordnung verwenden. Dies ist eine geteilte Zuordnung.

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

Schreiben Sie mit dynamischer Planungsmethode (Memo)

TODO Bitte schreiben Sie jemanden.

Recommended Posts

Ich habe verschiedene Funktionen der Fibonacci-Sequenz (Ruby) erstellt.
Ich habe versucht, verschiedene Nummernfolgeprogramme wie Koratz-Nummer, Fibonatch-Nummer, Dreieck-Nummer zu erstellen
[Ruby] Ich habe einen einfachen Ping-Client erstellt
Ich habe mit Ruby einen riskanten Würfel gemacht
Ich habe StringUtils.isBlank gemacht
Ich habe Ruby gestartet
Ich habe mit Ruby einen Blackjack gemacht (ich habe versucht, Minitest zu verwenden)
Ich habe eine Ruby-Erweiterungsbibliothek in C erstellt
Ich habe mit Ruby On Rails ein Portfolio erstellt
Ich habe mein eigenes Instagram-Tool wie Ruby [Ruby] erstellt.
[Ruby] Ich habe einen Crawler mit Anemone und Nokogiri gemacht.
Verschiedene Ruby-String-Operationen
Ich habe meinen eigenen mit Ruby erstellten Blackjack für mein Portfolio aktualisiert
Ich möchte verschiedene Funktionen mit Kotlin und Java implementieren!