Главная страница
    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.043 c
1-1156494622
ancot
2006-08-25 12:30
2006.10.08
TabControl без 3D рамки


15-1158277489
Black_phoenix
2006-09-15 03:44
2006.10.08
MySQL - Lite


15-1158555115
syte_ser78
2006-09-18 08:51
2006.10.08
palm 3


2-1158934347
jjj
2006-09-22 18:12
2006.10.08
TreeView


2-1158664456
Василий Блаженный
2006-09-19 15:14
2006.10.08
TIdPOP3Client





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский