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

Пояснение к Ханойским башням - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
Михаил Ф.
0 / 0 / 0
Регистрация: 06.08.2009
Сообщений: 3
17.08.2009, 16:08     Пояснение к Ханойским башням #1
Здравствуйте. В программировании новичок, иду пока по книге Дейтелов, там в одной из первых глав наткнулся на задачу о Ханойских башнях. День бился головой об стол, потом посмотрел решение и все равно не смог до конца разобраться в данном коде:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#include <conio.h>
 
char a,b,c;
int num;
 
void hanoy(int num,char a,char b,char c){
 
  if(num>0){
 
    hanoy(num-1,a,c,b);
 
    printf("%c--->%c\n",a,c);
 
    hanoy(num-1,b,a,c);
 
  }
}
void main(){
  clrscr();
  printf("number of rings=");
  scanf("%d",&num);
  a='A';b='B';c='C';
  hanoy(num,a,b,c);
  getch();
}
В частности:
C++
1
2
3
   hanoy(num-1,a,c,b);
 
    hanoy(num-1,b,a,c);
По какому принципу заменяются переменные, как считаются диски, и где return для возвращения промежуточного результата, чтобы посчитать окончательный (хотя тут и void и расчета нет для возврата)? В задаче сказано, что решение элементарное, послушное и строится на рекурсии (перемещение n - 1 диска)... Помогите разобраться: как расшифровать две вышепреведенные строки.
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2009, 16:08     Пояснение к Ханойским башням
Посмотрите здесь:

C++ пояснение по length
Граммотное пояснение. C++
Пояснение к коду C++
C++ Пояснение функции
C++ Пояснение к функциям
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2014, 19:44     Пояснение к Ханойским башням
Еще ссылки по теме:

C++ Пояснение typedef
Пояснение по синтаксису C++
Пояснение структуры ORDER C++

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

Или воспользуйтесь поиском по форуму:
dima__
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 20
30.11.2014, 19:44     Пояснение к Ханойским башням #21
с алгоритмом всё ясно. Не ясно, почему в 1й строчке консоли печатает "1 -> 2", а во второй "1 -> 3", потом "2 -> 3" несмотря на
C++
1
2
3
6 han (n-1, A, C); // где А==1, С==3
7 han (1, A, B );   // где А==1, В==2
8 han (n-1, C, B); // С==3, В==2
и ожидается, вроде бы,
сначала
"1 -> 3",
потом "1 -> 2"
и "3->2" а на самом деле выводится
Цитата Сообщение от dima__ Посмотреть сообщение
1 -> 2
1 -> 3
2 -> 3
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Yandex
Объявления
30.11.2014, 19:44     Пояснение к Ханойским башням
Ответ Создать тему
Опции темы

Текущее время: 03:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru