Функциялар



Download 227 Kb.
bet14/18
Sana09.07.2021
Hajmi227 Kb.
#113859
1   ...   10   11   12   13   14   15   16   17   18
Bog'liq
C Funksiyalar

Fact(4)=4*Fact(3)

Fact(4)=4*Fact(3)

Fact(4)=4*Fact(3)

Fact(4)=4*Fact(3)

Fact(4)=4*6

Fact(4)=24

Fact(3)=3*Fact(2)

Fact(3)=3*Fact(2)

Fact(3)=3*Fact(2)

Fact(3)=3*2







Fact(2)=2*Fact(1)

Fact(2)=2*Fact(1)

Fact(2)=2*1










Fact(1)=1*Fact(0)

Fact(1)=1*1













Fact(0)=1
















Rekursiv funktsiyalarni to’g’ri amal qilishi uchun rekursiv chaqirishlarning to’xtash sharti bo’lishi kerak. Aks holda rekursiya to’xtamasligi va o’z navbatida funktsiya ishi tugamasligi mumkin. Faktorial hisoblashida rekursiv tushishlarning to’xtash sharti funktsiya parametri n qiymati 0 bo’lishidir (shart operatorining rost shoxi).

Har bir rekursiv murojaat qo’shimcha xotira talab qiladi – qnomprogrammaning lokal obyektlari (o’zgaruvchilari) uchun har bir murojaatda stek deb nomlanuvchi xotira segmentidan yangidan joy ajratiladi. Masalan, rekursiv funktsiyaga 100 marta murojaat bo’lsa, jami 100 lokal obyektlarning majmuasi uchun joy ajratiladi. Chu sababli juda ko’p rekursiya bo’lganda, stek o’lchami cheklanganligi sababli (real rejimda 64Kb o’lchamgacha) u to’lib ketishi mumkin va bu holda programma o’z ishini «Stek to’lib ketdi» xabari bilan to’xtadi.

Rekursiya chiroyli, ixcham ko’ringani bilan xotirani tejash va hisoblash vaqtini qisqartirish nuqtayi-nazaridan imkon qadar uni iterativ hisoblash bilan almashtirilgani ma’qul hisoblanadi. Masalan, x-haqiqiy sonini n butun darajasini hisoblashni quyidagi yechim varianti nisbatan kam resurs talab qiladi:

double Butun_Daraja(double x, int n)

{

double p=1;



for (int i=1; i<=n; i++) p*=x;

return p;

}

Lekin shunday masalalar borki, ularni yechishda rekursiya juda samarali, hattoki yagona usuldir. Xususan, grammatik tahlil masalalarida rekursiya o’ng’ay hisoblandi.


Qaytayuklanuvchi funktsiyalar.

Ko’pincha bitta algoritmni xar xil turdagi qiymatlar uchun ishlatiladi. Chunda u algoritmlarni nomlari bir xil bo’lgani ma’quldir. Bir nechta funktsiyani bir xil nom lekin xar xil turdagi parametrlar bilan ishlatish fuktsiyani qayta yuklash deyiladi.

Kompilyator parametrni turlariga va soniga qarab mos bo’lgan funktsiyani chaqiradi. Bunday amalni xal qilish amali deyiladi va uning maqsadi parametrlaga ko’ra eng to’g’ri keladigan funktsiyani chaqirishdir , agar bunday funktsiya topilmasa kompilyatr xato degan xabar beradi, Funktsiyani aniqlashda qaytarish qiymatni turi axamiyati yo’q. Misol:

#include

int max(int, int);

char max(char,char);

float max(float,float)

int max(int,int,int);

void main()

{ int a,int b, char c, char d,int k,float x,y;

cin >> a>>b>>k>>c>>d>>x>>y;

cout << max(a,b)<

}

int max(int i,int j){return (i>j)?i:j;}



char max(char s1,char s2){ return (s1>s2) ? s1:s2;}

float max(float x,float y){return (x>y)?x:y;}

int max(int i,int j,int k){ return (i>j)?(i>k)?i:k?(j>k)?j:k;}

Agar parametrlar turi to’g’ri funktsiyalarni birorta turiga to’g’ri kelmasa ular keltiriladi kuyidagi qoyda bo’yicha bool va charintga , floatdoublega va int doublega.

Qaytayuklanuvchi funktsiyalar kuyidagi qoydalarga rioya qilmoq kerak:

-qaytayuklanuvchi funqtsiyalar bir ko’rinish soxasida bo’lishi kerak;

-qaytayuklanuchi funktsiyalarda kelishuv bo’yicha parametrlar ishlatilsa , bunday parametrlar barcha qaytayuklanish funktsiyalarda xam ishlatilishi kerak va bir xil qiymatga ega bo’lish kerak.

-funktsiyalar qayta yuklanmaydi agar ular parametrlari turi faqat const va & belgisi bilan farq kilsa.



Download 227 Kb.

Do'stlaringiz bilan baham:
1   ...   10   11   12   13   14   15   16   17   18




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