argon bulletin board
Факултети => Факултет по математика и информатика => Темата е започната от: VooDooMaN в 27.04.2006, 17:11:54
-
Познат ли Ви е примера от по-долу? Най-тривиалният, с който се сблъскваме в университета след "Hello World!". Като пример е чудесен, като реално приложим код адски слаб. Дали навсякъде се обяснява защо...
int Factorial( int number ) {
if ( number == 1 ) {
return 1;
}
else {
return number * Factorial( number - 1 );
}
}
-
И на мен ми беше странно това, при положение че може с цикъл и без рекурсия. По-добър пример за рекурсия би бил да речем намиране на пермутации. Може би това с факториела е по-разбираемо ако никога не си се сблъсквал с рекурсия.
Сещам се за нещо кoето четох някъде, не се сещам кой го е казал : "Повторението е прекрасно, рекурсията е божествена " :)
-
Аз пък прочетох следното:
In general, recursion leads to small code and slow execution and chews up stack space. For a small group of problems, recursion can produce simple, elegant solutions. For a slightly larger group of problems, it can produce simple, elegant, hard-to-understand solutions. For most problems, it produces massively complicated solutions—in those cases, simple iteration is usually more understandable. Use recursion selectively.
За Факториел и Фибоначи при нарастване на числата рекурсията ще гълта безсмислено много памет и то при положение, че с итерация сложността ще е линейна. Със сигурност има места, където е полезна, но в общия случай е трудна за разбиране и гълта много памет.
-
забелязал съм че го дават в книгите за начинаещи за програмиране като пример за рекурсия незнам защо
да си призная едно време като за първи път четох рекурсия макар и с този пример пак не го разбрах :))s
-
Аз мисля, че като за първи пример за първа рекурсия този код е идеален. Аз лично научих рекурсията именно с този пример (не от този форум, някой да не помисли нещо друго).
-
Явно, част от колегите са чели книжките само до глава "Рекурсия"... Или поне в тези книжки, които аз съм чел, после е показано колко по-добра е производителността при използване на итеративно решение (особено за Фибоначи)...
Иначе примерът е ясен, но ако аз трябваше да илюстрирам рекурсията, бих ползвал това:
(http://www.math.ubc.ca/~jbryan/recursion.jpg)
-
Кой по-конкретно визираш?
-
Явно, част от колегите са чели книжките само до глава "Рекурсия"...
Супер, само че снимката по мое мнение е пример по-скоро за фрактална алгебра, отколкото за рекурсия.
Иначе снимката момчето я държи с дясната ръка, следователно това е дясна рекурсия :)
-
Малко е скалъпен примера със снимката :wink:, по-реално щеше да е ако не беше снимка, а телевизор.