Tail-call optimization Tail recursion-ն ունի հատուկ կարգավիճակ Racket-ում, քանի որ կոմպիլյատորը նկատում է պոչի կանչերը և օպտիմալացնում դրանք: Սովորաբար, ֆունկցիայի յուրաքանչյուր զանգ, ներառյալ ռեկուրսիվ կանչը, հանգեցնում է արգումենտների մեկ այլ հավաքածուի պահպանմանը հիշողության բլոկում, որը կոչվում է զանգերի կույտ::
Պոչը ռեկուրսիա է?
Ի՞նչ է պոչի ռեկուրսիան: Ռեկուրսիվ ֆունկցիան-ը պոչի ռեկուրսիվ է, երբ ռեկուրսիվ կանչը վերջին բանն է, որն իրականացվում է ֆունկցիայի կողմից: Օրինակ, հետևյալ C++ ֆունկցիայի տպագրությունը tail recursive է:
Ocaml tail-ը ռեկուրսի՞վ է:
OCaml Tail recursion
Ֆունկցիոնալ լեզուները, ինչպիսին է OCaml-ը, մեծապես ապավինում են ռեկուրսիվ ֆունկցիաներին Այնուամենայնիվ, նման գործառույթները կարող են հանգեցնել հիշողության սպառման կամ մեծ տվյալների հավաքածուների հետ աշխատելիս, կուտակել հեղեղումները. Պոչի ռեկուրսիան նման դեպքերում օպտիմալացման կարևոր աղբյուր է:
Արդյո՞ք պոչը ռեկուրսիվ կրկնվող է:
Պոչի ռեկուրսիվ մեթոդը մեկ եղանակ է՝ նշելու կրկնվող գործընթաց: Կրկնումը այնքան տարածված է, որ ծրագրավորման լեզուների մեծամասնությունը տրամադրում է հատուկ կոնստրուկցիաներ դրա ճշգրտման համար, որոնք հայտնի են որպես հանգույցներ:
Կարագ տեսակավորման պոչը ռեկուրսի՞վ է:
ա. TAIL- RECURSIVE-QUICKSORT-ն անում է ճիշտ այն, ինչ անում է QUICKSORT; հետևաբար այն ճիշտ է դասավորվում: QUICKSORT-ը և TAIL-RECURSIVE-QUICKSORT-ը կատարում են նույն բաժանումը, այնուհետև յուրաքանչյուրն իրեն կանչում է A, p, q − 1 արգումենտներով: QUICKSORT-ն այնուհետև նորից կանչում է իրեն՝ A, q + 1, r արգումենտներով::