Rekursion C ++





рекурсия с++, Fibonacci-c ++

In C ++ jede Funktion außer Haupt() Es kann sich nennen. То есть в теле функции может быть размещен вызов этой же функции. Это называется рекурсией.

Когда программа выполняет код рекурсивной функции – es dauern würde, ihn endlos, wenn Sie bieten nicht die Ausgangsbedingung der Rekursion. Dies sollte daran erinnert werden,, zu vermeiden Anrufe looping. Daher sollte bei der Definition der rekursiven Funktion zeigen auf jeden Fall die Ausgangsbedingung. beispielsweise, можно разместить её вызов внутри блока ob.

В этой программе функция recursionGoDown() wird sich nennen, пока в нее передается число больше нуля. Jedes Mal, Funktion wird die Anzahl der, von denen eine in der Signatureinheit subtrahiert. Sobald die Bedingung falsch (die Anzahl ist geringer als Null ist) – Anrufe an den Ausgang der Rekursion stoppen und starten.

Wenn wir in einer Funktionsnummer übergeben 9, вызовов будет 10. Программа как бы углубляется на 10 Ebenen, Durchführung Rekursion. Чтобы ей выйти из рекурсии, надо пройти эти десять уровней обратно. Da die Codezeile

Es wird auch durchgeführt werden, 10 Zeit, но значение somenumber wird in umgekehrter Reihenfolge ändern. Erstens wird es auf die entsprechen, что передалось в функцию на 10 уровне рекурсии, dann an der Tatsache, dass 9 Ebene, usw..

рекурсия с++, Fibonacci-c ++

Ich möchte die Aufmerksamkeit auf einen wichtigen Punkt zu zeichnen. Jeder rekursive Aufruf erstellt eine neue Variable somenumber der neue Wert. Эти переменные будут занимать какое-то место в оперативной памяти. Если вызовов 10, in diesem Beispiel, und es wird in dem Speicher gespeichert werden, 10 mit unterschiedlichen Werten der Variablen. Можно дописать в программу вывод на экран адресов, die speichert diese Werte und sehen diese:

Wird an der Funktionsnummer 2: recursionGoDown(2); Уровней рекурсии будет 3.

рекурсия с++, Fibonacci-c ++

Wie gesehen werden kann, jede Variable somenumber хранится в отдельном отрезке памяти. Während der Ausgang auf der Rückseite Rekursion Werte werden von der gleichen Adresse in umgekehrter Reihenfolge genommen.

Fast jede Aufgabe, die Rekursion werden kann unter Verwendung gelöst, werden kann implementiert Iterationszyklen. Вы ведь легко можете показать на экран числа от 9 zu 0 und 0 zu 9 Anwendung Zyklen. Помимо этого следует знать, dass Rekursion mehr Speicherplatz und Rechen produzieren wird langsamer, Cem Iteration.

aber, wie von erfahrenen Programmierern behauptet und viele Autoren der Bücher, Dies bedeutet nicht,, dass Rekursion ist nutzlos. Es gibt Aufgaben, entscheiden, welche, Mit Iterationszyklen, schwierig und umständlich. Eine rekursive Lösung sieht besser aus. Для начального уровня, bis lernen Sie Grundlagen der Programmierung in C ++, Sie müssen nur verstehen,, was eine Rekursion ist und wie es funktioniert.

Weitere Videos über Rekursion 6′ (Autor Video: Denis Markov).

Newsletter neue Lektionen über die Programmierung:

Rekursion C ++
4 (80%) 2 Stimmen

4 Gedanken zu "Rekursion C ++

  1. Вы слишком строги к рекурсии ;-)

    1. Rekursion – это общий математический аппарат, которым теоретически выражаются все вычислимые алгоритмы (это я взял из мат. теории алгоритмов).
    2. Все задачи над динамическими структурами данных (списки, очереди, деревья, графы, …) решаются рекурсивно проще, а главное нагляднее, чем итерационно (итерационные циклические алгоритмы лучше работают над массивамистатическими конструкциями).
    3. Есть алгоритмы, которые выражаются в 2-3 строчки рекурсивно, но которые крайне сложно выписать без рекурсии. Красивейший пример тому: знаменитая задача “Turm von Hanoi”. Многие алгоритмы сортировки (тех же массивов) лучше выражаются в рекурсивной форме.

    Рекурсия только кажется сложной, потому что ей не учат в отечественной практике и не умеют её применять. А в университетах Франции, beispielsweise, обучение 1-го семестра начинают с обучения рекурсивным алгоритмам.

    1. Всегда хорошо, когда кто-то высказывает свою точку зрения и свое личное мнение, основанное на опыте. Начинающим полезно будет почитать.

    2. Как вы предлагаете использовать рекурсию в списках и очередях?

      1. Rekursion – Das самый естественный способ обработки любых динамических структур (списков, деревьев и т.д.), это демонстрируют функциональные языки программирования, такие как Lisp. Такой подход намного эффективней, чем итерационный (циклами). Но это нужно показывать на примерах кода
        А простой и красивый пример рекурсии посмотрите в задаче возведения числа в степень: http://purecodecpp.com/archives/2734

Hinterlasse eine Antwort

Deine Email-Adresse wird nicht veröffentlicht. erforderliche Felder sind markiert *