Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Какодемон
1 / 1 / 0
Регистрация: 27.12.2008
Сообщений: 16
1

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

27.12.2008, 04:19. Просмотров 584. Ответов 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
Ответы с готовыми решениями:

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

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

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

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

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

2
accept
4838 / 3260 / 464
Регистрация: 10.12.2008
Сообщений: 10,569
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

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

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

помогите разобраться с gcc
начал изучать c++. не могу скомпилировать первую программу. Вот что я делал. 1.запускаю файл...


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

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

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