N = 4 uchun takrorlanish munosabatini hisoblash:
hanoy (4) = 2 * hanoy (3) + 1 = 2 * (2 * hanoy (2) + 1) + 1 = 2 * (2 * (2 * hanoy (1) + 1) + 1) + 1 = 2 * (2 * (2 * 1 + 1) + 1) + 1 = 2 * (2 * (3) + 1) + 1 = 2 * (7) + 1 = 15
|
Ilovalarning namunalari:
Psevdokod (rekursiv):
|
funktsiya Ханой:
kiritish: tamsayı n, shu kabi n >= 1
1. agar n 1 ga teng keyin qaytib keling 1
2. qaytish [2 * [qo'ng'iroq qiling hanoy (n-1)] + 1]
oxiri xanoy
|
Barcha rekursiv funktsiyalar aniq echimga ega bo'lmasada, Xanoy minorasi ketma-ketligini aniq formulaga keltirish mumkin.[9]
Xanoy minoralari uchun aniq formula:
|
h1 = 1 = 21 - 1 soat2 = 3 = 22 - 1 soat3 = 7 = 23 - 1 soat4 = 15 = 24 - 1 soat5 = 31 = 25 - 1 soat6 = 63 = 26 - 1 soat7 = 127 = 27 - 1
Umuman olganda: hn = 2n - 1, barchasi uchun n> = 1
|
Misol : n! faktorialni rekursiyali funksiya orqali hisoblochi dastur tuzilsin. n!=1*2*…*(n- 1)*n;
#include
using namespace std;
int fack1(int);
int main()
{
int n;
cout << "n="; cin >> n;
cout << fack1(n) << endl;
return 0;
system ("pause");
}
int fack1(int k)
{
if (k < 0) return 0;
if (k == 0) return 1;
else return fack1(k)*fack1(k-1);
}
Misol : Fibonachchi ketma ketligining n – hadini rekursiya qism dastur orqali hisoblovchi dastur
#include
using namespace std;
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);
}
Xulosa
Ushbu mustaqil ish yordamida rekursiya tushunchasi haqida ma’lumotlarga ega bo’ldim va ulardan qanday hollarda foydalanishni bilib oldim. Rekursiv funksiyalar yordamida misollar bilan ham tanishib otdim.
Foydalanilgan adabiyotlar.
Goole.com hamda ziyonet.uz ijtimoiy tarmoqlari
Virt, Niklaus (1976). Algoritmlar Ma'lumotlar tuzilmalari Dasturlar. Prentice-Hall. p.126. ISBN 978-0-13022418-7.
Mitrovich, Ivan. "Rekursiyani takrorlash bilan almashtiring". ThoughtWorks.
TEST
Rekursiya deb nimaga aytiladi
Funktsiya o'z – o'zini chaqirishi
Kiritish
Jalb etish
Rekursiya turlari to’g’ri keltirilgan qatorni toping
Oddiy va murakkab
to'g'ri rekursiya va bilvosita rekursiya
a va b
Bilvosita rekursiya deb nimaga aytiladi
funktsiya boshqa bir funktsiyani chaqirsa va u funktsiya o'z navbatida birinchisini chaqirishi
funktsiya o'zini o'zi chaqirsa
o’zini o’zi kiritsa
Rekursiv funktsiya – bu …
Chiqaruvchu funksiya
Kirituvchi funksiya
o’ziga o’zi murojjat qiluvchi funktsiyaga aytiladi.
Manfiy argument uchun funktsiya qanday qiymat qaytaradi.
-1
1
0 qiymat qaytaradi
PRINTD(123) chaqiriqda birinchi funktsiya PRINTD N = 123 qiymatga ega. U 12 qiymatni ikkinchi PRINTD ga uzatadi, boshqarish o’ziga qaytganda qaysi sonni chiqaradi.
1
2
3 ni chiqaradi
… - shunday qatorga aytiladiki bu qatorning n chi hadi n ning qiymatiga va qatorning oldingi elementlariga bog’lik buladi.
funksiya
Rekurrent qator deb
Massiv
To'g'ri rekursiya deb …
Agarda funktsiya o'zini o'zi chaqirsa
O’zini chiqarish
O’zini kiritsa
Do'stlaringiz bilan baham: |