fibonacci.py
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
def generate_fibonacci_recursive(n):
"""Generate the n-th Fibonacci number using recursion."""
if n <= 1:
return n
else:
return generate_fibonacci_recursive(n - 1) + generate_fibonacci_recursive(n - 2)
def gen_fibonacci_list(n):
"""Generates a list of the first n Fibonacci numbers."""
fibonacci_sequence = []
for i in range(n):
fibonacci_sequence.append(generate_fibonacci_recursive(i))
return fibonacci_sequence
fibonacci_dyn_prog.py
n=4
berechnen, so ergibt sich folgender Rekursionsbaum:1. gfr(4)
2. gfr(3) + gfr(2)
3. (gfr(2) + gfr(1)) + gfr(2)
4. ((gfr(1) + gfr(0)) + gfr(1)) + gfr(2)
5. ((gfr(1) + gfr(0)) + gfr(1)) + (gfr(1) + gfr(0))
â gfr(2)
wird z.B. mehrfach berechnet
Mittels dynamischer Programmierung bauen wir die Ergebnisse von unten nach oben auf und speichern sie fĂŒr spĂ€tere Berechnungen:
def fib(n):
if n == 0:
return 0
else:
previous_fib, current_fib = 0, 1
for _ in range(n - 1):
new_fib = previous_fib + current_fib
previous_fib = current_fib
current_fib = new_fib
return current_fib
multiprocessing
(meistens) und threading
(manchmal) in Python@startuml start :start largest_number = a_list[0]; note right: Initialize largest_number\nwith the first element of the list :Iterate over each number in a_list; repeat :Check if number > largest_number; if (number > largest_number?) then (yes) :Update largest_number to number; else (no) :Do nothing; endif repeat while (there are more numbers in the list?) :return largest_number; stop
@startuml start if (L.size = 0) then (true) :return null; stop else (false) :largest â L[0]; endif :i = 0; repeat :item = L[i]; if (item > largest) then (true) :largest â item; endif :i = i + 1; repeat while (i < L.size) stop @enduml