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

Принцип работы рекурсии - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Добавить в элементы список и вывести их на экран http://www.cyberforum.ru/cpp-beginners/thread656208.html
написала программу, которая добавляет в список элементы и должна их выводить на экран. функция, которая должна их выводить не работает. подскажите, в чем ошибка? #include <iostream> using...
C++ auto Хочу сделать автомат. переменную auto int x; auto double f; Ругается. Как исправить? http://www.cyberforum.ru/cpp-beginners/thread656204.html
C++ Раздельная компиляция
Пусть есть программа, которая состоит из 2 файлов. 1 файл: основной, там где main 2 файл: содержит некоторые функции Также есть header. Я набираю текст программы в wordpad. Далее хочу...
закрытие консоли C++
в чем допущена оплошность:требуется ввести размер матрицы,вводим допустим 5,происходит вывод на экран,далее следует выбор: удалить одну строку(выбираем 1) либо удалить несколько( выбираем 2).допустим...
C++ unsigned char максимум и минимум цикл http://www.cyberforum.ru/cpp-beginners/thread656183.html
Тут небольшая непонятка - выводятся пустые символы, это и есть максимальное и минимальное значение типа unsigned char? #include <iostream> using namespace std; int main() { //переменная...
C++ Исправить ошибки в программе "Hello, World" в общем первая программа после hello world на С++ , помогите исправить апшибки пжл п.с. что за тупая система не дает создать тему со словом помогите о_О подробнее

Показать сообщение отдельно
I.M.
565 / 548 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
23.09.2012, 00:10
C++
1
2
3
4
5
int f(int i)
{
   if(i <= 1)return 1;
   return i+f(i-1);
}
Теперь вызываем f(3)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int f(3)
{
   if(3 <= 1)return 1;//false
   return 3+f(2);//вызывается f(2), а f(3) ждет, когда она доработает. Т.е. f(3) будет висеть в памяти
   //когда f(2) вернет результат, то к нему добавится 3. f(3) вернет эту сумму и закончит работать
}
 
int f(2)
{
   if(2 <= 1)return 1;//false
   return 2+f(1);//вызывается f(1), а f(2) ждет, когда она доработает. Т.е. f(2) будет висеть в памяти
   //когда f(1) вернет результат, то к нему добавится 2. f(2) вернет эту сумму и закончит работать
 
}
 
int f(1)
{
   if(1 <= 1)return 1;//true - выход из рекурсии
   return 2+f(0);//уже не выполнится
 
}
Таким образом, последовательность такая:
f(3) начинает работать
f(2) начинает работать
f(1) начинает работать
f(1) заканчивает работать
f(2) заканчивает работать
f(3) заканчивает работать
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru