1. Oldindan aniqlangan funksiyalar


Download 34.44 Kb.
bet6/17
Sana23.12.2022
Hajmi34.44 Kb.
#1045945
1   2   3   4   5   6   7   8   9   ...   17
Bog'liq
yakuniy dasturlash

12. Rekursiya tushunchasi
Rekursiya deb funksiya tanasida shu funksiyaning o’zini chaqirishiga aytiladi. Rekursiya uchun quyidagi aniqlanishlar o’rinli: 1. Har bir rekursiv formula kamida bitta asos ifodaga ega bo’lishi kerak. 2. Umumiy ifoda doim asos ifodaga yo’naltirilgan bo’lishi kerak. 3. Asos ifoda rekursiyani to’xtatishi kerak. Buni yuqoridagi misollar uchun tuzilgan funksiyalarda ko’rish mumkin. Faktorial uchun:
long F(int n) { if (n == 0) return 1; else return n * F(n-1); }
Berilgan haqiqiy x soning n - darajasini hisoblash funksiyasi:
double Butun_Daraja(double x, int n)
{
if (n == 0)
return 1;
else
return x * Butun_Daraja(x, n-1);
}


13. «Xanoy minorasi» masalasi
Quyida, rekursiya bilan samarali echiladigan «Xanoy minorasi» masalasini ko’raylik. Masala. Uchta A, B, C qoziq va n-ta har xil o’lchamli xalqalar mavjud. Xalqalarni o’lchamlari o’sish tartibida 1 dan n gacha tartiblangan. Boshda barcha xalqalar A qoziqqa rasmdagidek joylashtirilgan. A qoziqdagi barcha xalqalarni C qoziqqa, yordamchi B qoziqdan foydalangan holda, quyidagi qoidalarga amal qilgan holda o’tkazish talab etiladi: xalqalarni bittadan ko’chirish kerak va katta o’lchamli xalqani kichik o’lchamli xalqa ustiga qo’yish mumkin emas.
#include
using namespace std;
void Hanoy(int n, char a = 'A', char b = 'C',
char c = 'B')
{
if(n)
{
Hanoy(n-1, a, c, b);
cout << "Xalqa " << a << " dan " << b
<< " ga o'tkazilsin\n";
Hanoy(n-1, c, b, a);
}
}
int main()
{
unsigned int Xalqalar_Soni;
cout << "Hanoy minorasi masalasi" << endl;
cout << "Xalqalar sonini kiriting: ";
cin >> Xalqalar_Soni;
Hanoy(Xalqalar_Soni);
return 0;
}
Xalqalar soni 3 bo’lganda (Xalqalar_Soni=3) dastur ekranga xalqalarni ko’chirish bo’yicha amallar ketma-ketligini chop etadi
500 yil vaqt kerak bo’ladi.



Download 34.44 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   17




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