Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Веб-программирование > Perl
Перезагрузить страницу Деревья и хонойские башни
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
AlexP1989 AlexP1989 вне форума
Новичок
 
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.11.2009
По умолчанию 13.05.2010, 22:13

2. Хонойские башни
Код:
 print "Введите количество дисков: ";
  chomp ($kol=<STDIN>);
  for ($k=1; $k<=$kol; $k++)
    {  
      push (@a,$k);
    }
  $ster1{nazv}='A';
  $ster1{sost}=\@a;
  $ster2{nazv}='B';
  $ster3{nazv}='C';
print "\nНачальное состояние стержней: \n";
print "\tСтержень A: @{$ster1{sost}}\n\tСтержень B:\n\tСтержень C:\n\n";
bashni($kol,\%ster1,\%ster2,\%ster3);

sub bashni
{
  my ($l,$st1,$st2,$st3)=@_;
  my $dsk;
  return if $l<=0;
  bashni($l-1,$st1,$st3,$st2);
  $sh++;
  unshift(@{$st3->{sost}},$dsk=shift(@{$st1->{sost}}));
  print "$sh: Перенос диска радиусом $dsk со стержня ","$st1->{nazv} на стержень $st3->{nazv}\n";
  print "\tСтержень A: @{$ster1{sost}}\n";
  print "\tСтержень B: @{$ster2{sost}}\n";
  print "\tСтержень C: @{$ster3{sost}}\n\n";
  bashni($l-1,$st2,$st1,$st3);
}
Ответить с цитированием
  (#2 (permalink)) Старый
AlexP1989 AlexP1989 вне форума
Новичок
 
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.11.2009
По умолчанию 25.05.2010, 20:17

мне не очень понятно почему переставляются параметры при вызове рекурсивной функции?
Ответить с цитированием
  (#3 (permalink)) Старый
Alexiski Alexiski на форуме
Любитель давать советы
 
Сообщений: 4,266
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
По умолчанию 26.05.2010, 01:21

Потому что для того, чтобы переместить N (>0) дисков с прута 1 на прут 3, используя прут 2 как рабочий надо выполнить 3 операции:
1) переместить N-1 дисков с прута 1 на прут 2, используя прут 3 как рабочий;
2) переложить один оставшийся диск с прута 1 на прут 3;
3) переместить те же самые N-1 дисков с прута 2 на прут 3, используя прут 1 как рабочий;
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ханойские башни и Раскраска карт Tutsan Prolog 3 13.03.2011 21:44
Ханонийские башни Настенька 5 Prolog 1 12.12.2010 16:56
Задача похожая на ханойские башни Lanats Prolog 32 14.05.2010 10:21
Ханойские башни как реализовать Gock C++ Builder 3 30.03.2010 17:03
Продам две башни Chieftec BigTower, с начинкой. chieftec Продам 0 19.03.2010 06:38
Ханойские башни russelrus Prolog 16 08.11.2009 20:52
Ханойские Башни costa Prolog 1 28.10.2006 18:39
Ханойские башни как их создать icry Алгоритмы 6 21.08.2006 00:53
Деревья! Опять деревья! $layer Prolog 3 19.02.2006 21:44
AVL-деревья (сбалансированные деревья) kifa Prolog 1 14.05.2005 18:58
Расширенная постановка ханойской башни Иван2004 Prolog 1 17.12.2004 22:21
Нужна программа на ханойские башни Corba Prolog 2 06.11.2004 13:06



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов