1-Mavzu 1-Mavzu Reja: Klass a’zolariga ruxsatni boshqarish


Rekursiyaning klassik namunasi sonlarning faktoriyalini hisoblashdir. N soning faktoriyali


Download 111.72 Kb.
bet37/96
Sana29.03.2023
Hajmi111.72 Kb.
#1307438
1   ...   33   34   35   36   37   38   39   40   ...   96
Bog'liq
1-Mavzu 1-Mavzu Reja Klass a’zolariga ruxsatni boshqarish

Rekursiyaning klassik namunasi sonlarning faktoriyalini hisoblashdir. N soning faktoriyali 1 dan N gacha bo'lgan barcha sonlar ko`paytmasidir. Misol uchun, 3 soning faktoriali 1x2x3 yoki 6 ga teng. Dasturning quyidagi misolida sonning faktoriyalini hisoblashning rekursiv metodi ko'rsatiladi. Taqqoslash uchun, ushbu dastur faktorialni hisoblashning rekursiv bo'lmagan variantini ham o'z ichiga oladi.
// Rekursiyaga oddiy misol.
using System;
class Factorial {
// Bu rekursiv metod hisoblanadi.
public int FactR(int n) {
int result;
if(n==l) return 1;
result = FactR(n-l) * n;
return result;
}
// Bu iteratsiya metodi.
public int Factl(int n) {
int t, result;
result = 1;
for(t=l; t <= n; t++) result *= t;
return result;
}
}
class Recursion {
static void Main() {
Factorial f = new Factorial();
Console.WriteLine("Факториалы, рассчитанные рекурсивным методом.");
Console.WriteLine("Факториал числа 3 равен " + f.FactR(3));
Console.WriteLine("Факториал числа 4 равен " + f.FactR(4));
Console.WriteLine("Факториал числа 5 равен " + f.FactR(5));
Console.WriteLine();
Console.WriteLine("Факториалы, рассчитанные итерационным методом.");
Console.WriteLine("Факториал числа 3 равен " + f.FactR(3));
Console.WriteLine("Факториал числа 4 равен " + f.FactR(4)) ;
Console.WriteLine("Факториал числа 5 равен " + f.FactR(5));
}
}
Ushbu dastur bajarilganda quyidagi natijalar olinadi.
Факториалы, рассчитанные рекурсивным методом.
Факториал числа 3 равен 6
Факториал числа 4 равен 24
Факториал числа 5 равен 120
Факториалы, рассчитанные итерационным методом.
Факториал числа 3 равен 6
Факториал числа 4 равен 24
Факториал числа 5 равен 120
Facti() ning rekursiv bo'lmagan metodning ishlash printsipi juda aniq. 1 dan boshlab sonlarni ketma-ket bir-biriga ko'paytirilib, faktorial hosil qiluvchi jarayon siklni ishlatadi.
Recursiv metodda FactR() yanada murakkab tamoyilga amal qilinadi. Agar FactR() metod 1 argument bilan chaqirilsa, u 1 qiymatini qaytaradi. Aks holda, u factr(n-1)*n ko`paytmani qaytaradi. Ushbu ko`paytmani hisoblash uchun FactR() n-1 argument bilan chaqiriladi. Bu jarayon argument qiymati 1ga teng bo'lgunga qadar takrorlanadi, undan keyin olingan qiymatlar ushbu metodning oldingi chaqiruvlariga qaytadi. Misol uchun, 2 raqamining faktoriyalini hisoblashda birinchi chaqirilganda FactR() metodi ikkinchi chaqiruvi 1 argumenti bilan ko`paytiriladi. Ushbu chaqiruvda 1 qiymati qaytariladi, keyin 2 (argumentning asl qiymati n) bilan ko'paytiriladi. Natijada 2 raqamining faktoriyali (1*2) teng bo'lgan 2 natija qaytariladi. FactR() metodini har bir chaqirishda rekursiya darajasini aniq ko'rsatish uchun WriteLine()operatorni o'z ichiga olgan, shuningdek, ma'lum bir sonning faktoriyalini hisoblashning oraliq natijalarini ko`rish qiziq bo'ladi.
Metod o'zini-o'zi chaqirganda tizim yangi mahalliy o'zgaruvchilar va parametrlar uchun xotirani taqsimlaydi va metodning kodi ushbu yangi o'zgaruvchilar va parametrlar bilan boshidanoq bajariladi. Metodning rekursiv chaqiruvi bilan uning yangi nusxasi yaratilmaydi, faqat uning yangi argumentlari ishlatiladi. Har bir rekursiv chaqiruvdan keyin eski lokal o'zgaruvchilar va parametrlar to'plamdan chiqariladi va metodni bajarishdagi chaqiruv nuqtasi yangilanadi. Rekursiv metodlarini asta-sekin siqilgan va keyin o`z holiga qaytgan prujina harakat qilish printsipi bilan taqqosh mumkin. Quyida satrni teskari tartibda chiqarish uchun rekursiyaga yana bir misoli keltirilgan.

Download 111.72 Kb.

Do'stlaringiz bilan baham:
1   ...   33   34   35   36   37   38   39   40   ...   96




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