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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ с++ задачи на массивы и мартицы http://www.cyberforum.ru/cpp-beginners/thread47453.html
помогите написать код програми: В одномірному масиві, що складається з n дійсних елементів, вирахувати: 1) кількість елементів масиву, що рівні 0; 2) суму елементів масиву, що розташовані...
C++ Параметр передаваемый в функцию Добрый день, уважаемые, посетители форума. Вот я написал быструю сортировку: // quicksort.cpp: главный файл проекта. #include "stdafx.h" #include <iostream> #include <conio.h> #include... http://www.cyberforum.ru/cpp-beginners/thread47446.html
C++ Найти 100 первых простых чисел
Привет всем помогите пожалуйста кто может у меня такая проблема не могу решить задачи по C++ потому что я не понимаю этот язык программирования вот несколько заданий. 1. Найти 100 первых простых...
Чтение директории C++
Киньте пример на "чистом" C++ чтения директории. Т.е. надо прочесть директорию, записать все имена файлов и поддиректорий в массив записей. Запись состоит из двух полей - строка с именем и поле с...
C++ operator[] http://www.cyberforum.ru/cpp-beginners/thread47416.html
есть класс CItem, в качестве члена указан список CList<CVariant> data; как будет выглядеть operator класса CItem, чтобы данный код сработал? CItem item; item = CVariant("some data =)");...
C++ Связные списки Я практически полный нуб в С++. Вот такая задача: В столовой предлагаются N комплексных обедов, состоящих из Q блюд. Известна стоимость и калорийность каждого блюда. Сколько стоит самый деше¬вый и... подробнее

Показать сообщение отдельно
Михаил Ф.
0 / 0 / 0
Регистрация: 06.08.2009
Сообщений: 3

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

17.08.2009, 16:08. Просмотров 2142. Ответов 20
Метки (Все метки)

Здравствуйте. В программировании новичок, иду пока по книге Дейтелов, там в одной из первых глав наткнулся на задачу о Ханойских башнях. День бился головой об стол, потом посмотрел решение и все равно не смог до конца разобраться в данном коде:

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 диска)... Помогите разобраться: как расшифровать две вышепреведенные строки.
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru