Latihan 1: Memoization & Dynamic Programming — Algoritma

Latihan 1 dari materi Memoization & Dynamic Programming di Algoritma — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Lengkapi fibMemo(n, memo = {}) supaya mengembalikan angka ke-n deret Fibonacci (0, 1, 1, 2, 3, 5, 8, ...) dengan memoization:

  1. Base case: kalau n <= 1, kembalikan n.
  2. Kalau hasil untuk n sudah ada di memo, kembalikan memo[n].
  3. Kalau belum, hitung dari dua angka Fibonacci sebelumnya: panggil lagi fibMemo untuk n - 1 dan untuk n - 2, teruskan memo yang sama ke kedua panggilan itu, lalu jumlahkan hasilnya. Simpan jumlahnya ke memo[n], lalu kembalikan.

Simpan dan baca catatannya lewat object memo (misalnya memo[n]), dan kirim memo ke tiap panggilan, supaya angka besar selesai dalam sekejap.

console.log di starter jangan diubah. Output-nya harus tiga baris ini, berurutan:

Function-nya juga dicek dengan fibMemo(78), yang harus cepat mengembalikan 8944394323791464.

Hint