ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. 
ИспользованиС рСкурсии Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

РСкурсивный Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ производится Ρ‚Π°ΠΊ: Function Kvad (xc, yc, a: integer; ax, ay, bx, by, cx, cy, dx, dy, m: real; n: integer) :integer; Dx:=xc-a; dy:=yc+a; {Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ для Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ}. Xc:=WindowWidth div 2; {Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ ΡˆΠΈΡ€ΠΈΠ½Ρƒ графичСского ΠΎΠΊΠ½Π°}. Cx:=xc+a; cy:=yc+a; {Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ для Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ Π»ΠΈΠ½ΠΈΠΈ}. Bx:=xc+a; by:=yc-a; {Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ для… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ИспользованиС рСкурсии Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ простой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ square, строящСй Π½Π° ΡΠΊΡ€Π°Π½Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ вписанных Π΄Ρ€ΡƒΠ³ Π² Π΄Ρ€ΡƒΠ³Π° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ для этого рСкурсивный Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ИспользованиС рСкурсии Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅.

Анализ изобраТСния: Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ большой ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ со Π²ΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΌΠΈ Π² Π½Π΅Π³ΠΎ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π°ΠΌΠΈ мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ вписанный ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ свои ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΏΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌ описанного ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π°. ВсСго ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ 6 ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ². Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ построСния этого изобраТСния, ΠΌΠΎΠΆΠ½ΠΎ:

ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ изобраТСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π° со Π²ΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΌ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠΌ мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

для изобраТСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ уровня ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ значСниями ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒΡΡ автоматичСски Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ рисования ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ².

ОпишСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ рисования:

Π‘Π½Π°Ρ‡Π°Π»Π° вычСрчиваСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ…ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ (ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚). ПослС этого вызываСтся функция Kvad строящая Π²Π½ΡƒΡ‚Ρ€ΠΈ этого Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° (ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π°) ΠΌΠ°Π»Ρ‹ΠΉ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π΅Π³ΠΎ Π»Π΅ΠΆΠ°Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π° ΡΠ΅Ρ€Π΅Π΄ΠΈΠ½Π°Ρ… сторон большого ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π°. Π’ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ цСлочислСнный Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ n, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ рСкурсии.

Для рисования ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ½ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹. ΠŸΡ€ΠΈ этом Π½Π°Π΄ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ (x1,y1), (x2,y2). Для этого Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ графичСского ΠΎΠΊΠ½Π°:

xc:=WindowWidth div 2; {Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ ΡˆΠΈΡ€ΠΈΠ½Ρƒ графичСского ΠΎΠΊΠ½Π°}.

yc:=WindowHeight div 2; {Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ высоту — // - // - }.

ax:=xc-a; ay:=yc-a; {Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ для ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ}.

bx:=xc+a; by:=yc-a; {Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ для Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ}.

cx:=xc+a; cy:=yc+a; {Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ для Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ Π»ΠΈΠ½ΠΈΠΈ}.

dx:=xc-a; dy:=yc+a; {Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ для Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ}.

Π³Π΄Π΅, Π° — Π΄Π»ΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΈ.

function Kvad (xc, yc, a: integer; ax, ay, bx, by, cx, cy, dx, dy, m: real; n: integer) :integer;

begin.

if n=0 then Kvad:=0.

else.

begin {ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π»ΠΈΠ½ΠΈΠΉ округляСм}.

line (round (ax), round (ay), round (bx), round (by));

line (round (bx), round (by), round (cx), round (cy));

line (round (cx), round (cy), round (dx), round (dy));

line (round (dx), round (dy), round (ax), round (ay));

dec (n); {ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅ΠΌ n Π½Π° 1}.

РСкурсивный Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ производится Ρ‚Π°ΠΊ:

Kvad:=Kvad (xc, yc, a, ax+(bx-ax)*m, ay+(by-ay)*m, bx+(cx-bx)*m, by+(cy-by)*m, cx+(dx-cx)*m, cy+(dy-cy)*m, dx+(ax-dx)*m, dy+(ay-dy)*m, m, n);

end;

end;

m — Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ пСрСмСнная, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для нахоТдСния сСрСдины стороны.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ ΠΎΡΡƒΡ‰Π΅ΡΡ‚вляСм Π²Ρ‹Π·ΠΎΠ² Π΅Π΅ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠΉ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ.

Если ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² этой ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, Ρ‚ΠΎ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡Π°Ρ‚ся ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ бСсконСчно. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ этого Π½Π΅ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ввСсти Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ n, которая ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒΡΡ Π½Π° 1 (примСняСм dec (n)), Π° Π² Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ n0, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ это условиС Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Ρ€ΠΎΠ»ΡŒ своСобразной «Π·Π°Π³Π»ΡƒΡˆΠΊΠΈ», ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ число Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ