2-Amaliy mashg’ulot. Mavzu- rekursiya yordamida algoritmlarni qurish. Rekursiv funksiyalar



Download 245,45 Kb.
Pdf ko'rish
bet2/5
Sana29.12.2021
Hajmi245,45 Kb.
#79069
1   2   3   4   5
Bog'liq
2-amaliy mashg'ulot Mavzu- Rekursiya yordamida algoritmlarni qurish

Daraxtlarni tasvirlash

 

 

Daraxtni grafik shakldagi va uning chiziqsiz ro’yxat shaklidagi ifodalanishi 

 

EXM xotirasida daraxtni ifodalashaning eng qulay usuli bu uni bog’langan 



ro’yxatlar ko’rinishida ifodalashdir. Ro’yxat elementi tugun qiymati va chiqish 

darajasini o’z ichiga oluvchi informatsion maydonga xamda chiqish darajasiga teng 

bo’lgan ko’rsatkichlar maydoniga ega bo’lishi lozim (yuqoridai chizma), ya’ni 

elementning har bir ko’rsatkichi ushbu elementni tugun o’g’illari bo’lgan tugunlarga 

yo’nalishini aniqlaydi 

 Masalan, faktorialni hisoblash funksiyasini keltiramiz: 

39-listing.  

Output: 


Long fact(int k) 

{if (k<0) return 0; 

if (k==0) return 1; 

return k*fact(k-1); } 

 

Manfiy argument uchun funksiya 0 qiymat qaytaradi. Parametr 0 ga teng 



bo`lsa funksiya 1 qiymat qaytaradi. Aks holda, parametr qiymat birga 

kamaytirilgan holda funksiyaning o`zi chaqiriladi va uzatilgan parametrga 

ko`paytiriladi. Funksiyaning o`z - o`zini chaqirish formal parametr qiymati 0 ga 

teng bo`lganda to`xtatiladi. Keyingi misolimizda ixtiyoriy haqiqiy sonning butun 

darajasini hisoblash rekursiv funksiyasini keltiramiz. 



40-listing.  

Output: 


Double 

expo(double a, int n) 

{ if (n==0) return 1; 

if (a==0.0) return 0; 

if (n>0) return 

a*expo(a,n-1); 

if(n<0) return 

expo(a,n+1)/a; } 

 

Funksiyaga expo(2.0,3) shaklda murojaat qilinganda rekursiv ravishda 



funksiyaning ikkinchi parametri kamaygan holda murojaatlar hosil bo`ladi: 

Expo(2.0,3), expo(2.0,2), expo(2.0,1), expo(2.0,0). Bu murojaatlarda quyidagi 

ko`paytma hisoblanadi: 2.0*2.0*2.0*1 va kerakli natija hosil qilinadi. Shuni 

ko`rsatib o`tish kerakki, bu funksiyamizda noaniqlik mavjuddir ya`ni 0.0 ga teng 

sonning 0 chi darajasi 0 ga teng bo`ladi. Matematik nuqtai nazardan bo`lsa, bu 

holda noaniqlik kelib chiqadi. Yuqoridagi sodda misollarda rekursiyasiz iterativ 

funksiyalardan foydalanish maqsadga muvofiqdir. Masalan, darajani hisoblash 

funksiyani quyidagicha tuzish mumkin: 

41-listing.  

Output: 

Double 


expo(double a, int n) 

{ if (n==0) return 1; 

if (a==0.0) return 0; 

int k=(n>0)?n:-n; 

for(double s=1.0, int 

i=0; i

if (n>0) return s else 

return 1/s; } 

 

Rekursiyaga misol sifatida sonni satr shaklida chiqarish masalasini ko`rib 



chiqamiz. Son raqamlari teskari tartibda hosil bo`ladi. Birinchi usulda raqamlarni 

massivda saqlab so`ngra teskari tartibda chiqarishdir. 

Rekursiv usulda funksiya har bir chaqiriqda bosh raqamlardan nusxa olish 

uchun o`z - o`ziga murojaat qiladi, so`ngra oxirgi raqamni bosib chiqaradi. 

42-listing. print n 

in decimal (recursive)  

Output: 

printd(n) 

int n; 

( int i; 

if (n < 0) 

putchar(`-`); 

n = -n; 

if ((i = n/10) != 0) 

 

printd(i); 



putchar(n % 10 + `0`); ) 

PRINTD(123) chaqiriqda birinchi funksiya PRINTD N = 123 qiymatga ega. 

U 12 qiymatni ikkinchi PRINTD ga uzatadi, boshqarish o`ziga qaytganda 3 ni 

chiqaradi. 




Download 245,45 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish