5-Tajriba ishi Mavzu: Funksiyalarni tashkil etish. Ishdan maqsad



Yüklə 0,57 Mb.
səhifə5/7
tarix05.04.2022
ölçüsü0,57 Mb.
#54762
1   2   3   4   5   6   7
5-Tajriba ishi Mavzu Funksiyalarni tashkil etish. Ishdan maqsad

Rekursiv funksiyalar

Funksiya tanasida o‘zini o‘zi chaqirsa rekursiya deyiladi. Rekursiya ikki xil bo‘ladi:



  • Oddiy – agar funksiya o‘z tanasida o‘zini chaqirsa;

  • Vositali – agar birinchi funksiya ikkinchi funksiyani chaqirsa, ikkinchisi esa o‘z navbatida birinchi funksiyani chaqirsa.

Misol 1: Masala sifatida faktorialni rekursiv funksiya yordamida hisoblashni olamiz. Bunda n faktarialni hisoblashda oldingi n-1 faktarialni, n-1 faktarialni hisoblashda esa undan oldinikini hisoblashimiz zarur. Faktarialni hisoblaydigan funksiya yaratamiz. U o‘zining ichida oldingilarini chaqiradi.

Masalaning matematik ifodasi:





Masala yechimining dasturi

#include

using namespace std;

long Faktorial(int n)

{

if (!n) return 1;



else return n * Faktorial (n – 1);

}
int main()

{

int n;


cin>>n;

cout<

}

Misol 2. Xuddi faktorialni hisoblashdagi kabi darajani xisoblash funksiyasini ham misol keltirishimiz mumkin.

Masalaning matematik ifodasi:






Masala yechimining dasturi:

#include

using namespace std;

double Daraja(double x, int n)

{

if (!n) return 1;



else return x * Daraja(x, n - 1);

}

int main()



{

int n;


double x;

cin>>x>>n;

cout<

}

Darajani xisoblashning yana bir usuli bu ikkilik daraja. Bunda ham rekursiv funksiyadan foydalanib darajani hisoblaymiz.



#include

using namespace std;

double Daraja(double x, int n)

{

if (!n) return 1;



double a = Daraja(x, n/2);

return n%2==0 ? a*a:a*a*x;

}

int main()



{

int n;


double x;

cin>>x>>n;

cout<

}

Namuna. Rekursiv funksiyadan foydalangan holda ikkita sondan raqamlari yig‘indisi katta bo‘lgan sonni topuvchi dastur tuzing.

#include

using namespace std;

int sum, sum_1, sum_2 ;

int raqam(int son)

{

sum += son % 10;



son = son / 10;

if (son == 0) return sum;

raqam (son);

}

int main()



{

int sum_1 = 0, sum_2 = 0;

int son_1, son_2;

cin>>son_1>>son_2;

sum_1 = raqam(son_1);

sum_2 = raqam(son_2);

if (sum_1 > sum_2) cout << son_1;

else cout<

}


Yüklə 0,57 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6   7




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin