Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ZaMaZaN4iK
Мой лучший друг-отладчик!
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
#1

Базовые понятия о рекурсии - C++

24.06.2012, 03:43. Просмотров 491. Ответов 4
Метки нет (Все метки)

Здравствуйте! Я на этом форуме новичок и не атк давно занимаюсь программированием на С++. И у меня возник такой вопрос.
В книге (Борис Пахомов "С\С++ и MS Visual Studio 2010 для начинающих") мимоходом проходится такое понятие, как рекурсивные функции.Я понял что это функции которые вызывают сами себя.Но как она работает?Каков принцип её работы?Вот что меня волнует. В качестве примера в книге дана код вычисления факториала числа:
C++
1
2
3
4
5
6
7
8
9
10
int fact(int i)
{
  if(i==0)
  return(i);
  else
  {
    i=i*fact(i-1);
    return(i);
  }
}
Обьясните пожалуйста!
Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2012, 03:43     Базовые понятия о рекурсии
Посмотрите здесь:

Можно ли выучить C++, имея базовые понятия в C? - C++
Можно ли выучить C++ знаю С до функций и структур?

Базовые понятия-класс. Как он сотносится с обьектом? - C++
Обьясните также пожалуста, что значит error C2864: miclasse::AA: в пределах класса могут быть инициализированы только статические...

(Вопрос) Базовые понятия. Реализация разветвленных вычислительных процессов. - C++
Добрый вечер прошу помочь с задачей: Определить, можно ли построить треугольник по заданным длинам сторон a, b, c. Если построение...

Базовые знания - C++
Всем доброго времени суток! У меня появилась нужда в систематизации знаний языка,и потому хотел бы узнать несколько интересующих меня...

C++ и базовые функции PHP - C++
Когда-то давно кодил на с++, но то было около 10 лет назад. С тех пор уже все забыл, да и многое поменялось, но вот решил вспомнить навыки...

Абстрактные базовые классы - C++
Помогите решить пожалуйста!) Задание 1 . Создать базовый класс - фигура, и производные класс - круг, прямоугольник, трапеция....

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
24.06.2012, 04:07     Базовые понятия о рекурсии #2
а что конкретно непонятного?
внутри функции можно вызывать любые другие функции, в том числе и саму себя.
в приведенном примере функция вызывается с аргументом i. если i отлично от нуля, происходит вызов этой же функции с аргументом i - 1.

факториал нуля вроде еденице равен. поэтому, если i == 0, нужно еденицу возвращать, а не i. Иначе результат вызова fact(n) всегда нуль будет возвращать.
ZaMaZaN4iK
Мой лучший друг-отладчик!
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
24.06.2012, 04:14  [ТС]     Базовые понятия о рекурсии #3
насчёт возврта единицы, если i==0, то согласен с Вами.Но мне непонятно, КАК может функция вызывать саму себя? WTF?
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
24.06.2012, 04:32     Базовые понятия о рекурсии #4
Точно так же, как она может вызывать другие ункции.
Если посмотреть ассемблер, то в упрощенном варианте вызов функции - это выполнение кода начиная с какой-то метки. Имя функции - как раз такая метка. Так вот что мешает постоянно прыгать на одну и ту же метку и выполнять один и тот же код? Ничего не мешает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2012, 04:40     Базовые понятия о рекурсии
Еще ссылки по теме:

Базовые типы данных - C++
в пачке N листов бумаги размера А4 плотностью Р гр. на квадратный см. Найти вес пачки бумаги с точностью два знака после запятой

Абстрактные базовые классы - C++
Не могу создать экземпляр производного от АБК класса: #pragma once class BaseEllips { private: double x; double y; public: ...

Виртуальные базовые классы: какие требования предъявляются к иерархии наследования? - C++
класс на вершине иерархии определяет конструктор с параметрами. какие требования предъявляются к иерархии наследования?? ...

Базовые и порожденные классы - C++
Здравствуйте, помогите пожалуйста с вопросом: Что должно быть предусмотрено в базовом классе, чтобы порожденный класс мог обращаться к...

Исключения начальные понятия - C++
при запуске программы следующий ответ: #include <iostream> using namespace std; void Del(double i, double j) { try ...

Основные понятия класса - C++
Всем привет многоуважаемые хотел бы попросить о вашей помощи перещел к изучению "основного понятия класса", проблема заключаеться в том что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ZaMaZaN4iK
Мой лучший друг-отладчик!
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
24.06.2012, 04:40  [ТС]     Базовые понятия о рекурсии #5
Спасибо большое! Наконец то понял, что к чему.Спасибо
Yandex
Объявления
24.06.2012, 04:40     Базовые понятия о рекурсии
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru