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

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

Войти
Регистрация
Восстановить пароль
 
Виталий5
6 / 6 / 1
Регистрация: 15.06.2013
Сообщений: 69
#1

Рекурсия, нужно объяснение работы кода - C++

14.08.2013, 08:38. Просмотров 391. Ответов 2
Метки нет (Все метки)

Объясните пожалуйста как работает здесь рекурсия:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
void func(int num);
int main(void)
{
    func(5);
    return 0;
}
 
void func(int num)
{
    if(num)
        func(num-1);
    std::cout << num;
}
На выводе 012345.
0 понятно как получилось, почему потом число увеличивается на 1?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2013, 08:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Рекурсия, нужно объяснение работы кода (C++):

Объяснение кода - C++
завтра сдавать курсач. есть исходник, но проблема в том что я не понимаю код(пары часто прогуливал, простите). прошу, хоть кто-нибудь,...

Объяснение строки кода - C++
#include&lt;iostream&gt; using namespace std; int main() { int x;//Определенный тип данных, который необходимо ввести while( !...

Объяснение части кода - C++
ребят, помогите пожалуйста) не могу разобраться в коде typedef struct derevo { int data; derevo *left; derevo *right; }...

Объяснение участка кода - C++
Здравствуйте.помогите пожалуйста.что означают эти строки? cin &gt;&gt; value; sum += value; count++;

Необходимо объяснение кода Borland C+ - C++
Всем привет. Ребят возникла проблема, есть 5 уже написанных кодов к 5 задачам . Дело в том, что эти коды надо как-то уметь объяснить...

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

2
korvin_
1850 / 1321 / 205
Регистрация: 28.04.2012
Сообщений: 4,731
14.08.2013, 09:00 #2
А ты подставь тело функции в вызов, чтобы получить последовательность операций:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
func(5) {
  if (5) func(4) {
    if (4) func(3) {
      if (3) func(2) {
        if (2) func(1) {
          if (1) func(0) {
            if (0) ...; // false
            std::cout << 0;
          }
          std::cout << 1;
        }
        std::cout << 2;
      }
      std::cout << 3;
    }
    std::cout << 4;
  }
  std::cout << 5;
}
1
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.08.2013, 09:37 #3
При каждом возврате из рекурсии извлекается то значение num, которое было при предыдущем заходе в функцию. В последнем заходе в функцию num стало равно 0, вывели, потом возврат в предыдущий заход в фуркцию, где num было 1, вывели, потом возврат в предыдущий заход, где num было 2 ... , потом возврат в первый заход в функцию, где num было 5, вывели.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2013, 09:37
Привет! Вот еще темы с ответами:

Работа со стеками, объяснение кода программы - C++
Есть код программы (вырванный из целой проги кусок). В нем используются стеки. Помогите, пожалуйста, построчно (максимально подробно)...

Нужно объяснение - union - C++
Что обозначает така вот запись: unsigned a0 : 1; //каждый бит получает название unsigned a1 : 1; unsigned a2 : 1; ...

Очень нужно объяснение - C++
в универе дали вот такую функцию y=exp(-0.1*X)-{-}^2-cos(4*X)^4 надо написать код чтобы visual c++ могла подсчитать эту функцию ...

Нужно объяснение нескольких действий в программе - C++
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; #include &lt;iostream&gt; #include &quot;conio.h&quot; int main(int argc, char *argv)...


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

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

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