Tekshirdi: Bobojonova Madina Ahadovna


Foydalanilgan adabiyotlar


Download 133.94 Kb.
bet17/17
Sana21.06.2023
Hajmi133.94 Kb.
#1644174
1   ...   9   10   11   12   13   14   15   16   17
Foydalanilgan adabiyotlar .
1.Бьярн Страустрап. Введение я язык С++ 2. Крис Паппас, Уильям Мюррей. Программирование на С и С++ “Ирина”, BHV, Киев 2000г 3. Фридман Александр Львович, Язык программирование С++ 4. Aripov M.M., Imomov T., Irmuhamedov Z.M. va boshqalar. Informatika.5.Axborot texnologiyalari. Toshkent, 1-qism. 2002, 2-qism. 2003 Foydalanilgan elektron saytlar: http://www.infocity.kiev.ua/ http://www.intuit.ru/

Rekursiya masalalari
Reja:
1.Rekursiya haqida ma’lumot.
2. Faktorial hisoblash Fibonachchi ketma-ketligini aniqlovchi masala.
3. Fibonachchi ketma-ketligini aniqlovchi masala.

Rekursiya deb shundаy kоnstruktsiyagа аytilаdiki, funktsiya o‘zini o‘zi chаqirаdi. To‘g‘ri vа nisbiy rekursiya аjrаtilаdi. Funktsiya to‘g‘ri rekursiv deyilаdi, аgаr tаnаsidа o‘zigа murоjааt bo‘lsа. Funktsiya bоshqа funktsiyani chаqirsа vа bu funktsiya o‘z nаvbаtidа birinchi funktsiyani chаqirsа, bundаy funktsiya nisbiy rekursiv deyilаdi.
Rekursiyani qo‘llаshgа klаssik misоllаr – dаrаjаggа оshirish vа sоn fаktоriаlini hisoblаsh. Bu misоllаr rekursiyani tushuntirish qulаy bo‘lgаni uchun klаssik hisoblаnаdi, lekin ulаr iterаtsiоn usullаrgа ko‘rа аfzаllikkа egа emаs.
Faktorial hisoblash: Sonning faktorialini hisoblash uchun rekursiv funksiyadan foydalanishingiz mumkin. Masalan, 5! = 5 x 4 x 3 x 2 x 1 = 120. Faktorialni hisoblash uchun siz quyidagi funktsiyani yozishingiz mumkin:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
2. Fibonachchi ketma-ketligi: Fibonachchi ketma-ketligi har bir raqam o'zidan oldingi ikkita sonning yig'indisi bo'lgan ketma-ketlikdir. Masalan, birinchi o'nta raqam: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34. Fibonachchi ketma-ketligini hisoblash uchun siz quyidagi kabi funktsiyani yozishingiz mumkin:
def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
3. Ekponentsiya: Sonning kuchini hisoblash uchun rekursiv funksiyadan ham foydalanishingiz mumkin. Masalan, uni 2^3 = 2 x 2 x 2 = 8 deb hisoblash mumkin. Eksponentatsiya uchun siz quyidagi kabi funktsiyani yozishingiz mumkin:
def power(base, exponent):
if exponent == 0:
return 1; else:
return base * power(base, exponent-1)
Bu misollar rekursiv funksiyalardan qanday foydalanish mumkinligiga bir necha misoldir. Rekursiv funksiyalar ba'zi holatlarda ko'proq o'qiladigan va tushunarli kod yozishga yordam beradi. Biroq, uning haddan tashqari ishlatilishi dasturingiz ishlashiga salbiy ta'sir ko'rsatishi mumkin, shuning uchun uni ehtiyotkorlik bilan ishlatish kerak.
Qaytalanish - bu funksiya o'zini chaqirganda. Bu tushuncha matematika va informatika fanlarida tez-tez ishlatiladi. Rekursiv funksiyalar ba'zi holatlarda ko'proq o'qiladigan va tushunarli kod yozishga yordam beradi.
Misol tariqasida faktorial hisoblash amalini keltirish mumkin. Raqamning faktorialini hisoblash uchun ushbu raqamni o'zi bilan birga pastki raqamga bo'lish orqali davom etishingiz mumkin. Masalan, 5! Hisoblashda siz avval 5 ni 4 ga ko'paytirasiz, keyin bu natijani 3 ga ko'paytirasiz, keyin 2 ga ko'paytirasiz va nihoyat 1 ga ko'paytirasiz. Buni rekursiv funksiya bilan qilishingiz mumkin.
Yana bir misol - Fibonachchi ketma-ketligi. Bu ketma-ketlik har bir raqam oldingi ikkita sonning yig'indisi bo'lgan ketma-ketlikdir. Misol uchun, birinchi o'nta raqam: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34. Bu ketma-ketlikni rekursiv funksiya bilan hisoblashingiz mumkin.
Rekürsiya ba'zan o'qilishi va tushunarliroq kodlarni yozishga yordam beradi. Biroq, uning haddan tashqari ishlatilishi dasturingiz ishlashiga salbiy ta'sir ko'rsatishi mumkin, shuning uchun uni ehtiyotkorlik bilan ishlatish kerak.
Fibonachchi ketma ketligining n — hadini rekursiya qism dastur orqali hisoblovchi dastur
#include
int fib(int);
int main()
{
int n;
cout << "n="; cin >> n;
cout << fib(n) << endl;
return 0;
}
int fib(int k)
{
if (k == 0 || k == 1) return 1;
else return fib(k - 1) + fib(k - 2);
}
Rekursiyaga oid dastur
#include
using namespace std;
void tower(int n, char sourcePole, char destinationPole, char auxiliaryPole)
{ if(0 == n)
return;
tower(n - 1, sourcePole, auxiliaryPole, destinationPole);
cout << "Diskni ko'chiring "<< n << " dan " << sourcePole <<" ga "<< destinationPole << endl;
tower(n - 1, auxiliaryPole, destinationPole,
sourcePole);
} int main()
{ tower(3, 'S', 'D', 'A');
return 0; }

Foydalanilgan adabiyotlar.
C++ tilida programmalash asoslari.
Podbelskiy V., Fomin c. C dasturlash. tarbiyaviy
nafaqa. -2-nashr.- m.: moliya va statistika, 2004. -600 b.
pavlovskaya t., shupak y. c++ ob'ektga yo'naltirilgan
dasturlash. ustaxona. - Sankt-Peterburg: Sankt-Peterburg, 2005-265 yillar.
romanlar b. C++ dasturlash bo'yicha seminar: Ta'lim
nafaqa. Novosibirsk: NGTU, 2006.- 432p.
“dasturlash asoslari” fani laboratoriya ishlari uchun uslubiy qo‘llanma 1-
qism. t.: «nisim», 2013.-148b
Fayllar bilan ishlash



Download 133.94 Kb.

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




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