bugün wiki təsadüfi son
sözaltı sözlük
məsləhət postlar mesaj Profil

...

recursion


265 | 2 | 3

əjdahalar  googlla
məryəm mirzəxani - recursive loop

    Yalnız deyilsən!

    Bu duyğuların müvəqqəti olduğunu və kömək mövcud olduğunu bilmək vacibdir. Dostlarınıza, ailənizə, profesionallara müraciət etməyiniz vacibdir. Sizi dinləmək və lazım olan dəstəyi təmin etmək istəyən insanlar var. Sözlük yazarları olaraq səni hər zaman dinləyə bilərik.

    Əgər yalnız hiss edirsənsə, 860 qaynar xəttinə müraciət etməyini tövsiyə edirik.

    1. Bir dəfə bu başlığı sırf aşağıdakı şəkildə doldurmuşdum, lakin entry başlıq haqda kifayət qədər məlumat verməməsi səbəb göstərilərək silindi:
    --spoiler--

    (bax: recursion)


    --spoiler--
    Yəqin silən mod söhbət nədən gedir tutmadı, ya da ki zarafatın başlığa uyğun olması yenə də sözlük qaydalarında istisna yaratmırdı-*

    "recur" (yenidən baş vermək) feilindən törəyən isim, xüsusilə, riyaziyyat və kompüter elmlərində geniş istifadə olunan konsept. Bir funksiyanın tərifində o funksiyanın özünün iştirak etməsi ilə yaranır. Məntiqən bir şeyin tərifində həmin şeyin özünün iştirak etməsi mənasız səslənə bilər. Məsələn: "dürüst insan özünə dürüst deyən insandır" tərifində "dürüst insan" qavramını izah edərkən elə o ifadənin özündən istifadə edilməsi "dürüst insan" anlayışının tamamilə havada qalmasına səbəb olur. Bəs özü-özünü tərifləndirən rekursiv funksiyalar necə mənalı ola bilir? Cavab funksiyanın tərifində həmçinin "base case" (əsas hal?) adlanan varsayımın iştirakıdır. Misal üçün, bir çoxumuzun , bəlkə də, eşitdiyi Fibonacci sırasında n-ci ədədi təyin edən funksiyaya baxaq:

    F(n) := F(n - 1) + F(n - 2), n natural ədəddir və n >= 3.
    Yəni n-ci Fibonacci ədədi özündən əvvəlki və ondan da əvvəlki ədədin cəminə bərabərdir. Deyək ki, 3-ci ədədi axtarırıq, bu zaman:

    F(3) = F(2) + F(1). Məsələ odur ki, 2-ci və 1-ci yerdə duran ədədləri bilmədiyimiz üçün 3-cü yerdə duran ədədin də mənası olmur. Bu səbəbdən 1-ci və 2-ci ədədlərə base case olaraq default qiymətlər veririk. Fibonacci sırasında isə bu ədədlərin ikisinin də 1 olması qəbul olunub.

    F(1) = 1
    F(2) = 1

    Bu zaman yerdə qalan ədədləri asanlıqa hesablaya bilərik:
    F(3) = F(2) + F(1) = 1 1 = 2
    F(4) = F(3) + F(2) = 2 1 = 3
    F(5) = F(4) + F(3) = 2 3 = 5
    F(6) = F(5) + F(4) = 5 3 = 8
    ...
    F(i) = F(i - 1) + F(i - 2).

    Deməli, Fibonacci sırasında n-ci ədədi müəyyən edən rekursiv funksiyanın tam tərifi aşağıdakı kimi olur:
    F(1) = 1
    F(2) = 1
    F(n) := F(n -1) + F(n - 2), n natural əddədir və n >= 3.

    Bundan əlavı faktorial funskiyası da rekursiv şəkildə təyin olunur:
    0! = 1 (base case)
    n! = n (n - 1)! , n tam ədəddir və n >= 0 (recursive step).

    Proqramlaşdırmada isə, özü-özünü "call" edən funksiyalar recursion yaradır. Base case təyin edilmədikdə isə memory problemlərinə görə proqram kəsilir. Misal üçün, base case olmadıqda və ya düzgün yazılmadıqda Java-da "stackOverFlow Exception" şəklində xəta mesajı ilə proqram execution processinin sonuna çatmadan kəsilir.

    2 əjdaha!

    19.03.2022 12:39, dasein


üzv ol
Modalı bağla





...