Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

24.06.2012, 03:43. Просмотров 504. Ответов 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);
  }
}
Обьясните пожалуйста!
Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2012, 03:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Базовые понятия о рекурсии (C++):

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

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

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

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

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

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

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

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

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

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

Виртуальные базовые классы - C++
Необходимо написать примеры с комментариями использования виртуальных базовых классов

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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