Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.08;
Скачать: CL | DM;

Вниз

Рекурсия - непонятная штука!   Найти похожие ветки 

 
Deqww   (2006-09-15 18:57) [0]

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

Вводятся два числа - N и K. Требуется вывести в файл все цепочки длины N
такие, что на каждом месте может стоять любое число от 1 до K.
Например, для N=2, K=3 должно быть выведено:
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3


 
Плохиш ©   (2006-09-15 18:59) [1]

Здесь рекурсия никаким боком, обычный вложенный цикл.


 
Palladin ©   (2006-09-15 18:59) [2]

А что ты знаешь про рекурсию?


 
Плохиш ©   (2006-09-15 19:00) [3]

И, кстати, результат вывода не соответствует заданию.


 
Alien1769 ©   (2006-09-15 19:01) [4]

Разрабатывая программы на языке программирования, мы пользовались методом выделения составных частей в задаче. В итоге наши программы складывались, как из кубиков, из отдельных модулей - процедур, которые содержат обращения друг к другу.

Возникает вопрос - может ли процедура содержать обращение к самой себе и, если ответ "да", что из этого может получиться? Действительно, не все языки программирования поддерживают эту возможность, но такие обращения разрешены и порою приводят к очень интересным результатам.
Называется это рекурсией.  

Рекурсия - это такая организация алгоритма, при которой процедура обращается к самой себе. Сама процедура называется рекурсивной.


 
Palladin ©   (2006-09-15 19:01) [5]


> [1] Плохиш ©

ну студент это... студент... задач у него такой :)


 
Ketmar ©   (2006-09-15 19:11) [6]

> [5] Palladin ©   (15.09.06 19:01)
неа, не студент. лентяй это.


 
vidiv ©   (2006-09-15 19:58) [7]

а если я буду использовать дин. массивы и goto? это будет рекурсией? =)


 
Deqww   (2006-09-15 20:02) [8]

Нужно решить задачу именно рекурсивным способом!!!!


 
Palladin ©   (2006-09-15 20:07) [9]

Нужно так решай, поди на практических занятия примеры решения подбного давали...


 
Alien1769 ©   (2006-09-15 20:13) [10]


> Нужно решить задачу именно рекурсивным способом!!!!


Сумма....


 
Gydvin ©   (2006-09-15 20:19) [11]

Когда-то делал

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure keychet;
   procedure FormCreate(Sender: TObject);
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
   t: array[1..33] of integer;
   stop: integer;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure tform1.keychet;
var
 x, i: integer;
 s: string;
begin
 x := 33;
 s := "";
 if t[x] = 33 then begin
   while t[x] = 33 do begin
     dec(x);
     if x = 0 then begin
       stop := 1;
       exit;
     end;
   end;
   inc(t[x]);
   inc(x);
   if x > 33 then exit;
   for i := x to 33 do t[x] := 0;
 end else inc(t[x]);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 stop := 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 x: integer;
begin
 caption := "";
 for x := 1 to 33 do caption := caption + inttostr(t[x]) + ".";
 if stop = 1 then begin
   showmessage("End!");
   exit;
 end;
 keychet;
end;

end.


 
Помогающий =)   (2006-09-15 20:19) [12]

n_o=3
k_o=3

типа старт
n=1
pn(n)
типа енд

proc pn(n)
k=1
pk(k, n)
n = n+1
if n < n_o then pn(n)

proc pk(k,n)
k = k+1
вывод(n k)
if k < k_o then pk(k)

Вот общие наброски, дальше сам.


 
Gydvin ©   (2006-09-15 20:20) [13]

как нужно сам переделаешь


 
Бесконечное пиво ©   (2006-09-15 20:35) [14]

Чтобы понять, что такое рекурсия, надо понять, что такое рекурсия.


 
Alien1769 ©   (2006-09-15 20:37) [15]

Спасение утопающих - дело рук самих утопающих (С)

Автор сам больше не пишет а мы тут такие добрые...


 
Ketmar ©   (2006-09-15 20:44) [16]

лично мы -- злые. потому что тяпница, а трезвые.


 
Anatoly Podgoretsky ©   (2006-09-15 21:51) [17]

Начались занятия в школах?


 
Ketmar ©   (2006-09-15 21:58) [18]

> [17] Anatoly Podgoretsky ©   (15.09.06 21:51)
нет. контрольные, наверное.


 
Cyrax ©   (2006-09-15 22:37) [19]

А какой это класс ?


 
default ©   (2006-09-16 00:06) [20]

http://algolist.manual.ru/maths/combinat/seqnm.php



Страницы: 1 вся ветка

Текущий архив: 2006.10.08;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.041 c
2-1158604031
urel
2006-09-18 22:27
2006.10.08
Выборка данных в связанных БД


2-1158729756
o_serg
2006-09-20 09:22
2006.10.08
Не загружается Delphi 2005


2-1158833275
Evgenii
2006-09-21 14:07
2006.10.08
Как обнулить время компонента TMonthCalendar


5-1140551339
tvv
2006-02-21 22:48
2006.10.08
Загрузка компонента из DLL


2-1158740335
TrainerOfDolphins
2006-09-20 12:18
2006.10.08
Интересный вопрос про типы.