Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
«Recursion is the GOTO of functional programming»
Рекурсия: см. рекурсия.
Рекурсия, по сути, это доказательство по индукции
Реку́рсия — в определении, описании, изображении какого-либо объекта или процесса внутри самого этого объекта или процесса, то есть ситуация, когда объект является частью самого себя.
Математическая индукция — метод математического доказательства, используется чтобы доказать истинность некоторого утверждения для всех натуральных чисел. Для этого сначала проверяется истинность утверждения с номером 1 — база (базис) индукции, а затем доказывается, что, если верно утверждение с номером n, то верно и следующее утверждение с номером n + 1 — шаг индукции, или индукционный переход.
индукция это доказательство путем предоставления рекурсивного алгоритма
public static void Reverse<T>(this LinkedList<T> list) {
list.Head = Reverse(list.Head);
}
private static LinkedList<T>.Node Reverse<T>(LinkedList<T>.Node node) {
if(node == null)
return null;
if(node.Next == null)
return node;
var next = node.Next;
node.Next = null;
var result = Reverse(next);
next.Next = node;
return result;
} public static void Reverse<T>(this LinkedList<T> list) {
if(list.Head == null)
return;
LinkedList<T>.Node first = list.Head;
LinkedList<T>.Node last = first;
LinkedList<T>.Node current = last.Next;
while(current != null) {
last.Next = current.Next;
current.Next = first;
first = current;
current = last.Next;
}
list.Head = first;
}
О бедной рекурсии замолвите слово, или всё, что вы не знали и не хотите о ней знать