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

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

Войти
Регистрация
Восстановить пароль
 
Какодемон
1 / 1 / 0
Регистрация: 27.12.2008
Сообщений: 16
#1

Помогите разобраться с рекурсией... - C++

27.12.2008, 04:19. Просмотров 530. Ответов 2
Метки нет (Все метки)

Здравствуйте, нашел решение задачи "ханойских башен", проблема с пониманием.

Код
<...>
       tn(n,1,2,3);
<...>
    void tn(int n, int i, int j, int w)   /*   рекурсивная  */
    {  if (n>1)                           /*   функция      */
        {  tn (n-1,i,w,j);
           tn (1,i,j,w);
           tn (n-1,w,j,i);
         }
        else printf(" \n %d -> %d",i,j);
        return ;
    }
Вобщем, проблема в том, что я никак не могу понять, что происходит после того, как n становится больше двух. Я опять отнимаю от него 1, получаю 2, потом отнимаю ещё раз 1, достигаю базовой задачи, понимаю, что на экран выводится " printf(" \n %d -> %d",i,j); ". Потом возвращаюсь к n=3, но так, как не могу себе представить что должно происходить дальше, отнимаю единицу, возвращаюсь к базовой задаче(n=1).........
Вобщем, примерно 5 часов пытаюсь понять как это работает. Обьясните, пожалуйста, кому не лень.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2008, 04:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Помогите разобраться с рекурсией... (C++):

не могу разобраться рекурсией) - C++
Напишите программу, которая запрашивает число и показатель степени. Напишите рекурсивную функцию, которая возводит число в степень путем...

Разобраться с рекурсией: stack overflow - C++
#include&lt;iostream&gt; #include&lt;vector&gt; #include&lt;string&gt; #include&lt;math.h&gt; #include&lt;cmath&gt; #include&lt;algorithm&gt; using namespace std; ...

Помогите с Рекурсией ! - C++
Даны первый член и разность арифметической прогрессии. Написать рекурсивную функцию для нахождении n-ого члена прогрессии и сумму всех...

Помогите с рекурсией - C++
Добрый день уважаемые! Помогите пожалуйста с этой задачкой. А точнее выполнить ее с помощью рекурсии ...

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

If else помогите разобраться - C++
Доброго времени суток всем. Не так давно начали программировать в C++ MS Visual Studio 2010? и возникло у меня затруднение в работе с if ...

2
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
27.12.2008, 09:15 #2
функция сначала полностью разматывается а потом выполняется обратно до начала (так на каждом уровне сначала полностью разматывается а потом выполняется до начала)
потому на каждом n у тебя будут выполняться три вызова, в которых в каждом ещё три вызова, в которых в каждом ещё три вызова и т.д.
на самой большой глубине printf для каждого вызова
1
Какодемон
1 / 1 / 0
Регистрация: 27.12.2008
Сообщений: 16
27.12.2008, 12:12  [ТС] #3
Спасибо. Надо же... Я подразумевал это, но как тока ты явно это сказал - я всё очень быстро понял.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2008, 12:12
Привет! Вот еще темы с ответами:

Помогите разобраться - C++
У меня есть координаты North,West,East,South. Мне нужно отобразить их на осях ОХ и ОУ. Допустим я ввожу North 5 East 3 South 1 ...

reinterpret_cast помогите разобраться - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int schet_not_null(int *matrix, int i_matrix, int j_matrix, int...

Помогите разобраться в коде - C++
Помогите мне разобраться в коде. Заранее спасибо. int seek_substring_KMP (char s, char p) { int i, j, N, M; N = strlen(s); M =...

Помогите разобраться с try-catch - C++
#include &lt;iostream.h&gt; int main() { int s = 0; try { int a = 6 / s; } catch(char* exception) {


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

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

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