Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.044 c
8-1142450207
realSanek
2006-03-15 22:16
2006.10.08
Как вывести текст, выкручивающийся по спирали из точки?


11-1134294587
MTsv DN
2005-12-11 12:49
2006.10.08
Просмотр ВСЕХ компонентов независимо от Parent а...


2-1158308782
TrainerOfDolphins
2006-09-15 12:26
2006.10.08
loCaseInsensitive


15-1158563005
VitV
2006-09-18 11:03
2006.10.08
Название компонента


2-1158514780
Doblclick
2006-09-17 21:39
2006.10.08
Как в Richedit вставить strings?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский