Функции в С++ для начинающих. Рекурсия (2)

Сайт не является учебником по программированию. Это только небольшой авторский сборник информации в помощь начинающим программистам.

Чтобы не писать одну огромную статью, где будут многочисленные примеры рекурсии в C++ Напишу еще 1 пример рекурсии тут. По большому счету, кто понял основу и использование прямой рекурсии в своих функциях, могут пропустить этот материал. Здесь пример использования рекурсии, как в статье Функции в С++ для начинающих. Рекурсия

Задача 1 — С помощью рекурсии Вывести на экран факториал числа от 1 до N
Пишем код

ЭТАП №1 пишем пустую программу

Пустая программа создана, комментировать думаю не нужно

ЭТАП №2 пишем пишем саму рекурсивную функцию

Главный кусочек в программе рекурсии С++
return n*fact(n1)

Наша функция ведет перерасчет для получения предшествующего значения. Настоящим значением является параметр, переданный в n из точки вызова функции. Точка вызова нашей функции — это вызов её из основного блока программы. В нашем случае вызываем мы ее из функции int main()
Почему я пишу не следующее, а предшествующее. Когда числа умножаются, то сначала 0*1 тут наше настоящее значение 1, а ноль предыдущее значение расчета. В этом и есть вся суть рекурсии, настоящее значение мы вычисляем с помощью предшествующего, при этом предшествующее значение получено этим же вычислением. Компилятор сам вычисляет предшествующее значение и сам занимается хранением этого значения в памяти. От нас нужно только дать инструкции. Благодаря такой возможности компиляторов, функция встретив инструкцию на вызов самой себя (у нас fact(n1) ) не затирает параметр переданный в n для расчета функции. Параметр, переданный в n так и остается в памяти. При этом дополнительно определяется другая область памяти, в которой наша рекурсивная функция и выполняет рекурсивное вычисления для получения предшествующего результата.

Да простят меня программисты за столь разжеванное суждение. Приблизительно так получается воспринимают рекурсию новички.

Надеюсь этот материал блога С++ для начинающих стал кому-то полезным и помог понять базовое понятие рекурсивной функции в C++

Примечание. В этой статье как и в прошлой, я сделал вычисление не 1 до N, а до значения, введенного внутри программы. Смысл в том, что я не хотел писать лишнюю строчку кода и предполагал, что пользователь уже хорошо ориентируется в вводе данных и выводе их на экран.

Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

Один комментарий: Функции в С++ для начинающих. Рекурсия (2)

  • ww говорит:

    Неточности во втором листинге.
    в прототипе функции д.б. переменная задана со строчной (int n)
    условие д.б. в скобках if (n<2)
    отсутствует закрывающая фигурная скобка у функции main }

    Автор сайта отвечает:
    исправил. спасибо

    и в теле рекурсивной функции else return n*fact(n-1) д.б. точка с запятой, спасибо.

Добавить комментарий

Ваш e-mail не будет опубликован.

Поиск

 
     
Яндекс.Метрика

НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

Демотиватор китайской клавиатуры

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок