Dástúriy injiniringi baǵdarı 2-kurs 3001-22 topar studenti Utepbergenov Aydos




Download 400,69 Kb.
bet2/2
Sana30.01.2024
Hajmi400,69 Kb.
#148697
1   2
Bog'liq
Rekursiv funksiyalar menen islesiw.
BAHOLASH, ma\'lumotlar bazasi, Reference-322221103591, adjectives, MUSTAQIL ISH NAMUNA, 1-ШАХСИЙ ТОПШИРИҚ, Rangli metallar, manaviy va ma`rifiy ishlar bo`yicha, Deyl Karnegi - do\'st orttirish [uzsmart.uz], 8 м3 лик Выгреб, буйрык улги, Futbol, epson627842eu, Abdurahmonova Jasmina
Kemshiligi
Rekursiya mudamı yaddan qosımsha jay talap etedi.
Rekursiv sheshimde qáte qılıw múmkinshiligı joqarı, sebebi rekursiya oǵırı shalǵıtuwshi
Rekursiv sheshimdi qátesinińni tabıw qıyın.
Quramalı algoritmdı esaplaw qıyın.
Siz giltni tabıw algoritmın dúziwińiz kerek
Rekursiyaga qoyıw ushın bul eki shártdi jazıp alamız
Islew shárti: Qutı ishinde ishki qutı shıqsa, onı ashıp soqır. Eger ishki qutidan gilt shiqpasa sırtqı qutiniń kelgen jerinen dawam etedi.
Toqtap qalıw shárti: Qutı ishinen gilt tabılsa toqta.
Funksiya ózine ózi tuwrıdan-tuwrı yamasa qanday da qural arqalı shaqırıq qılıw procesine rekursiya dep ataladı hám bunday funksiya rekursiv funksiya dep ataladı.
Gúrrińdegi mısalǵa qaytatuǵın bolsaq, Abdullajan onda summa () atlı funksiya nátiyjesin esaplaw ushın oǵan bir neshe ret qayta shaqırıq etiwine tuwrı keldi. Naǵız usi zat rekursiyaniń mánisin quraydı. Lekin, usi tariyp járdeminde tuwrı hám qátesiz isleytuǵın rekursiv funksiya dúziw qıyın, onıń ushın rekursiv funksiyanıń tiykarǵı shártlerin jaqsı biliw kerek.
Rekursiyani tuwrı shólkemlestiriw shártleri:
Hár qanday tuwrı dúzilgen rekursiya tiykarın eki shárt quraydı.
Rekursiya tiykar shárti
Funksiyanıń ózine ózgertirilgen argument menen shaqırıq qılıw.
Rekursiv funksiya qaysı bolıp tabıladı waqıtqa kelip ózine shaqırıq qılıwdı toqtatıwı kerek boladı. Naǵız ózi zattı rekursiya tiykar shárti támiyinlep beredi. Gúrrińmizdegi mısalǵa qaytatuǵın bolsaq, Abdullajan summa () funksiyasına bir neshe ret shaqırıq etdi hám aqırında funksiyaǵa keliwshi dızbekte tek bir element qalǵanda tóqtadı. Bul másele ushın birden-bir element qalıwı tiykar shárt bolıp xızmet etedi hám bulmanǵa jetkende programma toqtap qalıwı kerekligini bilip aladı. Rekursiv funksiya dúziwde tiykar shártdi tuwrı qoyıw oǵırı zárúrli esaplanadı. Ele buǵan taǵı toqtalamiz.

Keyingi shártda ózgertirilgen argument degende, ádetde másele basındaǵı argumentden kishilew argument túsinilrdi (birpara jaǵdaylarda úlkenlew bolıwı múmkin). Mısalımızda, Abdullajan hár sapar summa () funksiyasına shaqırıq etkende odaǵı dızbek kólemin birge kemeytirip bardı. Bul zat da júdá zárúrli, sebebi birdey argument benen qayta -qayta shaqırıq etilgende yamasa argument qáte ózgertirilgende funksiya ózin sheksiz ret shaqırıwına tuwrı kelip qaladı. Bul haqqında da tolıq taǵı soylesemiz.


Ne ushın rekursiya kerek:
Tiykarin alǵanda, hár qanday rekursiv islengen máseleni iterativ usılda islew múmkin . Bunıń ústine rekursiv sheshim mudamı yaddan qosımsha jay talap etedi.
Sonday eken, ne ushın ol jaǵdayda rekursiya kerek? Álbette, bunıń jetkiliklishe sebepleri bar:
Rekursiya derlik balshıq jerde isletiledi. Yaǵnıy, qısqasha etip aytqanda odan qashıp qutilishdıń ilajı joq. Háreket etip kóriw bolsa qımbatqa túsiwi anıq )
Birpara jaǵdaylarda rekursiv sheshim talay ápiwayılaw. Ásirese, birpara máselelerdiń iterativ sheshimi oǵırı uzın bolıp ketiwi múmkin. Rekursiya bolsa kodtı bir neshe ese qısqartirip beriwi múmkin.
Kópshilik strukturalar hám algoritmlardı rekursiyasiz oyda sawlelendirip bolmaydı. Tree, Graph, Heap, QuickSort, MergeSort, … Bul kesteni ap-alıs dawam ettiriw múmkin. Ásirese, quramalı strukturalar bolǵan Tree hám Graphlarda rekursiya hár qádemde ushraydı. Programmistlikti bolsa olarsız oyda sawlelendirip bolmaydı, bul bolsa óz ornında rekursiya qanshellilik zárúrligini belgilep beredi.
Rekursiya funksional programmalastırıwdıń tiykarǵı elementlerinen esaplanadı. Ele funksional programmalastırıw haqqında esitpegen bolsańız ol haqqında maǵlıwmat izlep, oqıp kóriwdi máslahát beremen. Bir sóz menen aytqanda, házirde programmalastırıw tarawı jedellik menen funksional programmalastırıw paradigması tárepden ketpekte (Go hám Scala jaqtı úlgiler).
Taǵı bir qızıq maǵlıwmat, sonday programmalastırıw tilleri bar olarda ulıwma tákirarlanıw operatorları joq jáne bul boyınsha pútkilley rekursiyaga tayanadi. Haskell hám Erlang usılar gápinen.
Álbette, bulardıń barlıǵı rekursiyani tákirarlaw operatorlarınan pútkilley artiqmashliǵin ańlatpaydi. Tiykarınan, kóbinese programmistler rekursiya isletiwden aljasadı. Bunıń tiykarǵı sebepleri bolsa :
Rekursiya mudamı yaddan qosımsha jay talap etedi. Bul haqqında Call stack temamızda soylesemiz. Rekursiv sheshimde qáte etip múmkinshiligı joqarı. Aldın da aytqanimizday, rekursiya oǵırı aljastırıwshi. Usınıń sebepinen, onı isletiwde ańsatǵana qáte etip qoyıw múmkin.
Rekursiv sheshimdi qátesin tabıw qıyın. Bunday máselelerde qáte etip qoyıw múmkinshiligı joqarı bolıwı menen birge onı tawıp tuwırlaw da qıyın bolıwı múmkin. Bunıń tiykarǵı sebebi, bunday sheshimlerdi oyda sawlelendirip alıw júdá qıyın.
Rekursiv algoritmdıń quramalılıǵın esaplaw kóbinese júdá quramalı. Hátte, geyde tuwrı sheshimdi jazıwdıń ózi de kem bolıp qalıwı múmkin. Sebebi, onı iterativ sheshim menen salıstırıwda onıń quramalılıǵın esaplaw kerek boladı. Rekursiv algoritmlarda bul kóbinese júdá quramalı hám jaqsıǵana matematika talap etedi.
2. Javada rekursiv funksiya.
Rekursiya - bul funkciya shaqırıwınıń ózin orınlaw texnikası. Bul usıl quramalı mashqalalardi sheshiw ańsatlaw bolǵan ápiwayı máselelerge ajıratıw jolin beredi.
Rekursiyani túsiniw azmaz qıyın bolıwı múmkin. Onıń qanday islewin anıqlawdıń eń jaqsı jolı ol menen tájiriybe ótkeriw bolıp tabıladı.
Rekursiyaga mısal
Eki nomerdi bir-birine qosıw ańsat, lekin bir qatar nomerlerdi qosıw talay quramalı. Tómendegi mısalda, rekursiya bir qatar nomerlerdi eki nomerdi qosıw sıyaqlı ápiwayı wazıypaǵa bolıw arqalı qosıw ushın isletiledi:
Javada rekursiv funksiyaǵa mısallar.

Mısal
10 ǵa shekem bolǵan barlıq nomerlerdi qosıw ushın rekursiyadan paydalanıń.


public class Main {
public static void main (String[] args) {
int result = sum (10 );
System. out.println (result);
}
public static int sum (int k) {
if (k > 0) {
return k + sum (k - 1);
} else {
return 0;
}
}
}
Mısal túsintirildi
Sum () funksiyası shaqırilganda, ol k parametrin k den kishi barlıq nomerler jıyındısına qosadı hám nátiyjeni qaytaradı. K=0 ge aynalǵanda, funksiya jaysha 0 ni qaytaradı. Islep atirǵanda programma tómendegi ámellerdi atqaradı :
10 + summa (9 )
10 + ( 9 + jıyındısı (8) )
10 + ( 9 + ( 8 + jıyındısı (7) ) ). ..
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + jıyındısı (0)
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0
K 0 bolǵanda funksiya ózin shaqırmagani ushın programma bulmanda toqtap, nátiyjeni qaytaradı.
Toqtap qalıw jaǵdayı
Looplar sheksiz aylanıw mashqalasına dus kelgeni sıyaqlı, rekursiv funksiyalar da sheksiz rekursiya mashqalasına dus keliwi múmkin. Sheksiz rekursiya - bul funksiya hesh qashan ózin shaqırıwdı toqtatmaydi. Hár bir rekursiv funkciya toqtap qalıw shártin ıyelewi kerek, yaǵnıy funksiya ózin shaqırıwdı toqtatıwı shárt. Aldınǵı mısalda toqtap qalıw shárti k parametri 0 ge aynalǵanda esaplanadı.
Kontseptsiyanı jaqsılaw túsiniw ushın hár qıylı mısallardı kóriw paydalı boladı. Bul mısalda, funkciya baslanıw hám aqırı ortasında nomerler aralıǵın qosadı. Bul rekursiv funksiyanıń toqtap qalıwı shárti endi baslawdan úlken bolmaǵanda :
Mısal
5 ten 10 ǵa shekem bolǵan barlıq nomerlerdi qosıw ushın rekursiyadan paydalanıń.
public class Main {
public static void main (String[] args) {
int result = sum (5, 10 );
System. out.println (result);
}
public static int sum (int start, int end) {
if (end > start) {
return end + sum (start, end - 1);
} else {
return end;
}
}
}
Islep shıǵıwshı rekursiya menen júdá ıqtıyat bolıwı kerek, sebebi hesh qashan tawsılmaytuǵın yamasa artıqsha yad yamasa protsessor quwatın isletetuǵın funkciyanı jazıw júdá ańsat bolıwı múmkin. Biraq, tuwrı jazılsa, rekursiya programmalastırıwda júdá nátiyjeli hám matematikalıq tárepten oqlangan jantasıw bolıwı múmkin.

Juwmaq
Juwmaq ornında sonı da aytıw kerek C++ programmalastırıw tili funksiyalar tili esaplanadı.
Ol jaǵdayda hesh bolmaǵanda bir main () funksiyası qollanıladı.
Funksiyalar programmisttiń jumısın sezilerli dárejede ańsatıladı
Download 400,69 Kb.
1   2




Download 400,69 Kb.

Bosh sahifa
Aloqalar

    Bosh sahifa



Dástúriy injiniringi baǵdarı 2-kurs 3001-22 topar studenti Utepbergenov Aydos

Download 400,69 Kb.