Tolong jelaskan mengenai function fib(n) dari Pemrograman dinamis

if key n is not in map m

m[n] := fib(n − 1) + fib(n − 2)

Teknik menyimpan nilai yang telah dihitung ini disebut memoization; ini adalah pendekatan top-down, karena kita pertama kali memecah masalah menjadi subproblem lalu menghitung dan menyimpan nilai.

Dalam pendekatan bottom-up, kita menghitung nilai fib yang lebih kecil terlebih dahulu, lalu buat nilai yang lebih besar darinya. Metode ini juga menggunakan waktu O(n) karena mengandung loop yang berulang n - 1 kali, tetapi hanya membutuhkan ruang konstan (O(1)), berbeda dengan pendekatan top-down yang membutuhkan ruang O(n) untuk simpan peta.