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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Объясните смысл выражения http://www.cyberforum.ru/cpp-beginners/thread19835.html
#include<iostream.h> #include<conio.h> void main(void) { clrscr(); cout<<17%3 ; getch(); clrscr(); }
C++ Найти задачник по языку поздравляю всех с наступающим новым годом! я начинающий программист (т.е. почти ничего не знаю) и мне хотелось бы найти какой нибудь ЗАДАЧНИК чтобы по мере изучения теории с++ я мог бы... http://www.cyberforum.ru/cpp-beginners/thread19829.html
C++ Помогите переделать malloc в realloc!
Нужно что бы распределение памяти было realoc-ом, помогите пожалуйста Красным выделен malloc //---------------------ZADANIE ------------------------- // Dany natural'noe chislo N,...
C++ не используя доп. памяти , найти кол. совподающих значений элементов массива А и В
Задача такова: Даны два упорядоченных массива А и В (необязательно одинаковой длины). В каждом из массивов могут быть совподающие элементы. Не используя дополнительной памяти, найти количество...
C++ Конструктор копирования стека http://www.cyberforum.ru/cpp-beginners/thread19811.html
Добрый день! Имеется стандартный стек с функ-ми push(), pop(), а так же функ-й, определяющей размерность стека. Нужно написать конструктор копирования для этого стека. Что имеется ввиду под этим...
C++ Какое максимальное количество натуральных чисел можно выбрать чтобы среди них не было отличающихся в два раза Помогите пожалуйста у меня защита курсовой завтра по С++ а задача не сделана совсем!!!:( А в С++ я совсем не шарю!!!:'( помогите пожалуйста!!! Заранее Спасибо!!! Какое максимальное колличество... подробнее

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

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

27.12.2008, 04:19. Просмотров 544. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.