|
Rekursiv algoritmlarga misollar keltiring (faktorialni hisoblash, fibonachchi sonlari va h.k.)
|
bet | 21/71 | Sana | 18.12.2023 | Hajmi | 5,63 Mb. | | #122750 |
Bog'liq Test gift and xml-fayllar.org41. Rekursiv algoritmlarga misollar keltiring (faktorialni hisoblash, fibonachchi sonlari va h.k.)
int Factorial (int n)
{
if (n<=0) return 1; //1 ni qaytarish
else
return n*Factorial(n-1); //rekursiv chaqirish
}
Agar n > 0 bo’lsa, Factorial funktsiyasi o’zini o’zi chaqiradi. Bu masalani yechish uchun rekursiv protsedurani (funktsiyani emas) qo’llash mumkin.
Bunda ssilka bilan berilgan parametr orqali (protsedurani e’lon qilishda uning nomi oldiga ssilka & belgisi qo’yilgan) qo’llaniladi. Protsedurani rekursiv chaqirishda bu qiymat o’zgaradi.
void Factorial (int n, int &fact)
{
if (n==0) fact=1; //rekursiya yakunlanadi
else {
Factorial(n-1, fact); //(n-1)! ni rekursiv hisoblash
fact*=n; //n!=n*(n-1)!
}
}
|
| |