Asosiy tarkibga o‘tish

O‘rganish

Kirish
Qo‘llanma

Qo‘llanma · Dasturlash

recursion

Masalalar tez orada

Nazariya

Rekursiya — funksiya o‘zini kichikroq kirish bilan chaqiradi. Har rekursiyada ikki qism bo‘ladi: to‘xtash sharti (baza) va kichraytirish qadami.

def factorial(n):
    if n == 0:              # baza
        return 1
    return n * factorial(n - 1)

def digits_sum(n):
    return n if n < 10 else n % 10 + digits_sum(n // 10)

Qanday o‘ylash kerak

«Kichikroq masala yechilgan deb faraz qilaman. Undan kattasini qanday yasayman?» — shu savolga javob rekursiv qadam bo‘ladi.

Diqqat

  • Python’da chuqurlik chegarasi ~1000: chuqur rekursiyada sys.setrecursionlimit(10**6) yoki siklga o‘tkazing.
  • Bir xil argument qayta-qayta hisoblansa — eslab qoling (functools.lru_cache), bu allaqachon DP.
from functools import lru_cache

@lru_cache(maxsize=None)
def fib(n):
    return n if n < 2 else fib(n - 1) + fib(n - 2)

Bu mavzu bo‘yicha masalalar tez orada qo‘shiladi.

Shu mavzu kirgan kurslar

Menyu

Ko‘rinish

Klaviatura yorliqlari

Ctrl K yoki /
Qidirish va buyruqlar
g h
Bosh sahifa
g p
Masalalar
g c
Musobaqalar
g r
Reyting
Ctrl Enter
Masala sahifasida — yechimni yuborish
?
Shu oyna