трудновато дается может кто поможет?
объясните пожалуйста рекурсию на примере в с++
- KiFE
- Вопрос темы решён
-
-
а что именно не ясно?
попробую потихоньку.....основной конек рекурсии, ето большая эффективность (+ компакность) при решении опр. (подходяших) проблем. То-есть функция (метода) вы3ывает сама себя с постоянно меняюшимися параметрами, то тех пор пока какое-то условие не будет удовлетворено. Типичные примеры для рекурсивных вы3овов етот вычисление факториала или числа Фибоначи...
Во3мем факториал...то-есть напр. 5! = 1 * 2 * 3 *4 * 5 = 120Исходный код
Показать весь код#include <stdio.h> int fac(int n) { if ( n == 1 || n < 1) return 1; else return n * fac(n-1); } int main(int argc, char** argv) { for (int n=1; n<=10; n++ ) printf("n = %2d n! = %10d\n", n, fac(n)); return 0; }
P.S. Самое важное правило при етом: Eine Rekursion muss aufhören...
P.S.S.: в цикле рисуются факториалы с 1! до 10!
-
что еше следуeт 3нать, если поль3оваться рек. функциями:
при каждом вы3ове фкт. мы плучаем кусочек стэка для работы, соотв. с kаждым след. рек. шагом расход стэка растет. Если условия для во3врашения было поставлено не верно или вообше 3абыто, то программа терминирует в лудшем случае с т.н [stack overflow]. Вот картинка для представления что происходит, правда и3 другого примера:
Пожалуйста зарегистрируйся для просмотра данного изображения.
в3ято с Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
-
спасибо большое!