October 26

Fibonachi raqam

Birgina masalani bir necha usulda yechib ko'rdim.Barchasi to'gri naticha qaytaradi lekin ishlash vaqtida farq qiladi demak
Masala sharti: fibonachi raqam qiymatini topish(leetcode 509 masala).Fibonachi raqam bu o'zidan oldingi 2 raqam yig'indisi hisoblanadi.Masalan Fibonachi(4) => 3 ga teng 4 dan oldingi 2 ta raqam 3 + 2 = 5 bo'lmaydimi deydigan bo'lsak yo'q bu ketma-ketlik biz bilgan oddiy ketma ketlikda emas.
F(0) => 0
F(1) => 1
F(2) = F(1) + F(0) => 1
F(3) = F(2) + F(1) => 2
F(4) = F(3) + F(2) => 3

1-Yechim fibonachi arrayni shakllantirish orqali

var fib = function(n){
if(n <=1){ return n }
let fibArray = new Array(n+1).fill(0)
fibArray[1] = 1
for(let i =2; i <= n; i++){
  fibArray[i] = fibArray[i - 1] + fibArray[i - 2]
}
  return fibArray[n]
}

2-yechim Recursiya orqali yechim code ancha sodda

var fib = function(n){
  if(n <=1) return n
  return fib(n -1) + fib(n - 2)
}

3-yechim memorizatsiya orqali React chilar biladi Reactda memorizatsiya qilish juda oson tayyor useMemo,React.Memo hooklar mavjud lekin pure JS da memorizatsiya hash Map orqali yaratiladi.

var fib = function(n){
  let memo = new Map()
 memo.set(0,0)                  // Map da objectdan farqli o'laroq raqamni 
 memo.set(1,1)                  // ham key sifatida ishlatsa bo'ladi
function fb(fibonachi){
  if(memo.has(fibonachi)){
   return memo.get(fibonachi)
 }
 memo.set(fibonachi, fb(fibonachi -1) + fb(fibonachi-2))
 return memo.get(fibonachi)
}
return fb(n)
}

bularni tushunganingizni bilish uchun leetcode da yechin ko'ring o'zingiz ham