July 22, 2023

RECURTION FUNCTION

IKKI HIL FIKIRLASH USULI


Birinchi misol sifatida x sonini ni n ning natural darajasiga ko'taradigan pow(x, n) funksiyasini yozamiz. Boshqacha qilib aytganda, u x sonini o`zini o`ziga n marta ko'paytiradi.

pow(2, 2) = 4

pow(2, 3) = 8

pow(2, 4) = 16

Uni amalga oshirishning ikkita usulini ko'rib chiqaylik.

1 Iterativ usul: for loop:

function pow(x, n) { 

  let result = 1; // умножаем result на x n раз в цикле 
  
  for (let i = 0; i < n; i++) { 
    
      result *= x; 
  
   } 
   
   return result; 

}

 alert( pow(2, 3) ); // 8

2 Rekursiv usul: vazifani soddalashtirish va funktsiyani o'zi chaqirish:

function pow(x, n) {

if (n == 1) {

return x;

} else {

return x * pow(x, n - 1);

}

}

alert( pow(2, 3) ); // 8

E'tibor bering, rekursiv versiya tubdan farq qiladi.

pow(x, n) chaqirilsa, bajarilish ikki tarmoqqa bo'linadi:

if n==1 = x

/

pow(x, n) =

\

else = x * pow(x, n - 1)

1 Agar n soni == 1 ga teng bo'lsa, unda hamma narsa oddiy.

Bu branch rekursiyaning asosi deb ataladi, chunki u darhol aniq natijaga olib keladi: pow(x, 1) x ga teng.

2 Biz pow(x, n) ni quyidagicha ifodalashimiz mumkin: x * pow(x, n - 1).Matematikada quyidagicha yoziladi: xn = x * xn-1. Bu bo'lim rekursiya bosqichidir: masalani oddiyroq harakatga (x ga ko'paytirish) va oddiyroq o'xshash masalaga (kichikroq n bilan pow) qisqartiramiz. Keyingi qadamlar n 1 ga yetguncha vazifani osonlashtiradi va osonlashtiradi.

Pow funktsiyasi o'zini n == 1 gacha rekursiv chaqirishi aytiladi.

Masalan, pow(2, 4) ni hisoblashning rekursiv versiyasi quyidagi bosqichlardan iborat:

yani 2 sonini 4 chi darajasini topish kerak damak biz 2 o`zini o`ziga 4marta kupaytirish kerak

  1. pow(2, 4) = 2 * pow(2, 3)
  2. pow(2, 3) = 2 * pow(2, 2)
  3. pow(2, 2) = 2 * pow(2, 1)
  4. pow(2, 1) = 2

yuqorida kurishiz mumkun qavs ichidagi 4 soni har sikl aylanganda bittaga kamayib boryapti

Muammoning rekursiv yechimi odatda iterativga qaraganda qisqaroq bo'ladi. Shartli operatordan foydalanib (?) if o'rniga, biz pow(x, n) ni qayta yozishimiz mumkin, bu funksiya kodini yanada ixcham, ammo o'qishni osonlashtiradi

function pow(x, n) {

return (n == 1) ? x : (x * pow(x, n - 1));

}