Junior
Фарқияти байни иҷрои як вазифаи якхела бо истифода аз рекурсия ва давр чист?
sobes.tech AI
Ҷавоб аз AI
Рекурсия истифода мебарад, ки функсия худро даъват мекунад барои ҳалли масъала, бо тақсим кардани он ба вазифаҳои хурдтар то ҳолати асосӣ. Дар ҳоле ки, цикл блоки кодиҳоро такрор мекунад дар миқдори муайян ё то иҷрои шарте.
| Хусусият | Рекурсия | Цикл |
|---|---|---|
| Иҷро | Даъвати функсия | Такрор (Итерация) |
| Ёддошт | Стек даъватҳоро истифода мебарад | Вариаблҳои ҳисобкунанда/шартро истифода мебарад |
| Фаҳмидан | Мумкин аст кӯтоҳтар барои баъзе вазифаҳо | Аксар вақт бештар мустақим аст |
| Самаранокӣ | Мумкин аст сусттар бошад бо сабаби хароҷоти даъватҳо | Аксар вақт самараноктар аст |
| Ризки пур кардани стек | Дар рекурсияи амиқ эҳтимол дорад | Ҳеҷ эҳтимолияти пур кардани стек нест |
Масалан дар C# (факториал):
Иҷрои рекурсив:
// Ҳисоб кардани факториал рекурсив
int FactorialRecursive(int n)
{
if (n == 0)
{
return 1; // Ҳолати асосӣ
}
return n * FactorialRecursive(n - 1); // Даъвати рекурсив
}
Иҷро бо цикл:
// Ҳисоб кардани факториал бо истифода аз цикл
int FactorialIterative(int n)
{
int result = 1;
for (int i = 1; i <= n; i++)
{
result *= i;
}
return result;
}