А.А. Белеванцев, С.С. Гайсарян, Л.С. Корухова, Е.А. Кузьменкова, В.С. Махнычев - Алгоритмы и алгоритмические языки (1113416), страница 5
Текст из файла (страница 5)
Оещ1изь ю)цис З01ГОрнтм данноп фун101ии. «»ели функция Возврьпцает неко)<)рос значение в качесп)е рсзул)пата своей Работы, то В теле функции Обязательно до:1жсн прись ГСГВОвз1ь Оператор: ГО) О)'' '"ЧЫО )женно. который завершает вьшолнение функции и возвращает Вь)"И1сл1.'нное знзченнс ВырзжсниЯ В Вызывак)щуьз фУнк1Ц1К< Прн Вьнп1слсннн Выражения по мере нсООхОднмОстп Выполняется приведение типа к объявленном) типу Резъль) ата.
1) к))чествс прн;нера приведем определение функции, ВЬ~ЧИСЛЯКНЦСИ МЗКСИМЪМ ДВУХ ЦСЛЫХ ЧИСЕЛ. «ПЛ ! ЗПЬ З, .'1)К ГВГ010 )Й -' Ь) Т Й: Ь1 Если функция 1ье Воэарац)аст никйьоГО энйнсиия, то качсс1ве типа ВОЗЯ)эаецаемОГО значения указывастся Гтбхф"-' Г)псратОР ГВВ01:и В таких функциях может Отсутствовать тв: ЭТОМ СЛУИЙС ВЫПОЛНСИИЕ ФУНКЦИИ ЗЙВСРШЙЕТСЯ 'йф! достиексн100 конца тела 1)1ункцни, т.е. Эйкрываклт)сй ск06ки либо присутствовать, но ие содср®ать иикйкОГОК Выражепия (В этйм случйс Выполнение фу~кции зйвсрц1аетсФ' немедленно по Достижениео Оператора Ге ьц1 и). )-1апрныер: МЭ1 ) ОГГОЬГ.
) ай~И' ~ )В ' Ь,' а; Ь), Если функция не имеет пйоаметпов, то В кйнесГВВ", списка ее пйрамет)10В «кййывастся яот О, Напримс)1: 1Г!Ь 1лак2 1чо ~ О) Й, Ь) Воаг~ )"4б $б", Йа, ЙЬ); l/ Свой зна-1ений Й и Ь ГС ГОГО 1й Ь Ь) Т Й: Ь» ~) 1ГЙ фО)ЪМЙЙЬН1Р' ПЙ)~аТЖ.Г)'ОВ Р 11)1ОТОТНПЕ МО~КН11 ПС ))сред исГОльэованисм функции Она долькна Сыть ОМЙЙД™ ' еаьно 01треде11епй или 061явяенй В 11РОГ)1аммс, тхь в . 1Е СЫ10ВЙ фГНКЦИН ДОЛЖЕН бь1ть ИЙВССЭСИ, по К)ЙВЙне11 Месте С. * МСРС 1,С ПРОГТУТИН 1'." "11НСОК фЙКТНИЕОК11Х ПЙОЕ1ЫЕТ)ЭОВ») )1фЩКДТ СП11С101МИ фйКТИНССК11Х Н фо)1МЙЛЫ1ЫХ ПЙ)1ЙЫСТ)10В феИКЦ11И ДОЛЬК1ГО ОЬПЪ СООТВЕТСТВИЕ ПО ТИПС И ПОРЯДКУ следования пй)эймст)10В В этих списках.
06ратите Внимание, «Г1 Э ИагЦР1ИЕ 1"К0001', 011ЯЙЙ1СЛЬНО ДЙЯ1Е В ЕЛЫГЙС„КО1ДЙ фТГ1КЦИЯ ис имест пйРЙК1СГРОВ. ))Й)Замет)эы пе)те)ГЙ10тся толькО НО ЙЛ0~1С1111Й1, то сеть В Отдельные Области пам~ти, соответствуэ01цие формальным пйрамст)мам, кОпи)1укпся энйнсиия Г1срех1енн11х нлн Вьфй1ксний. яВля10еанх.'' фйктичсскиын ййрамстрак1И, и функция нс Влияст нй фактиисскис пй)1амстр1;1 )В чйстн11сти, нс мбяест наменять их Й1тйисния). )))1я обеспенения В01эможностн иэмсня1ь энйнення тя".Редйваемых В кйнсстве параметоов Обтсктов необходимо 1тсполь1оаать укйтатсли„при э10ы модсли)1устся персдйн11 параметров по ссылке; формальныс пйраыстры свяяыва1отся 1ссьп1Й10тся) с '10И ькс Оолйст1 Го памяти. Нто и фйктиисс1еис. ОИРСТ1елснн1Г1 функции В ИРОГрамме ПРСД1НЕСТВОВЙТЬ Се 1ЭбЬЯВЛЕГ1НС.
ЭЙДЙННОС В ВИДО НРОТОТИПЙ этой функции, 1де указывается имя функции, Тип:) Возвран)асмОГО с10 энйнсния и формйльнь1с парамееры функции. Нж1рнмер: 1 01 ЬЯЙК 11 ПЬ Й ) ПЬ 01;,. Удроееоа Ь1Г1 функ1Т1ЕН 1ЙЙИ Укйэйтекь — это псременнйя, э11ансн11см кото)э1э)1 ЯЙЛ1К ТСЯ ЙДРСС НСКОГОР1эГО ООЬСКГЙ. 11)1ИЫСР ОП)ЗСДСЛСНИЯ УЙЙЙЙТСЛя; Бнйр 11" Г. й, ) П' Ь1 (йиг ЯХ(реойг 1))РОМЕН))ЫХ и и у Зг()ЕЕЬ К - ПЕРЕМЕННйй ЦЕЛОННСЛСННОГО ТНГЯ, ЙКЯЯЯТЕгтЬ Нй ООЬЕКГ ЦЕЛОНИЕЛЕННОГО ТНПЯ. УКЯЗЯТЕЛЬ Р!', ЫО)КЕТ ЕОДЕРгКЯТЬ ЯДРЕС ЛГОООГО ООВЕКТЯ ЦЕЛОЧНЕЛЕННОГО ТИПЯ,::; ) 'ц)В ъкаяятелей определены операции й (Взятие йдреей'-'.; ОбЬЕКТЯ) И) г' «ОПЕряцНЛ ")ВТЫМЕНОВБННЛ Б')Б" НЕ ')НЯ')ЕННБ ПО'" ЯгТРЕСЪ'). Г)ЯПРНМЕР, ПРН ВЫПОЛНЕНИИ ОПЕРЯТОРЯ: Б переменнОЙ о 61гдет яйфикснровйн йдрес переменнОЙ кг й НРН Б)гп)ОЛНЕННИ ОПЕРЯТОРЯ: 'р —...
'* Й; Обьектъг нй котоРый ссылйетсл ъкйййтель Р, бъдет НРИОВоено ' значение 10. Использование укйййтелей В кйнестве пйряметрОБ ..., фънкцин пронллк)етрнръем ня примере следу)оц(ей зядячн. ,")т)(11)г((1,1, ъ)1)нсйт), функцньБ менлквцуто местймн двецелониеленпьее 1теременньйк ПОГ)робйем респить яйдйну бет непольтовйннл укгттйте))ей,:1 ОПНСйгй фУККЦИК) БНЯР; 11й 01йндйртный ЛОГОк Вывода бУдет БывеДено; ( ЛЕЛОВЯГЕЛЫ)О. 3НЯНЕННЯ ПЕРЕМЕННЫК ПЕ НТМЕННЛНЕ~ 1 '~ГО и поилтно, потому что пйрйметры (1)рнкцнн БЫБ1г П., Р) Д(КПСЛ 1К) ЗНЯЧЕННГО Н, СЛЕДОБЯТЕЛЬНО, ПОМЕНЛЛНСЬ М-'СТЯМП ТОЛЬКО КОПНИ ПВРйм(троВ к и ~/ ВНУТРИ функций., прн .))ОМ ННКЯКО10 БЛИЛ1ГНБ Пй СйМН фйКТИЧЕЕКБЕ ПЯРЯМСТРЫ К Н У НЕ ПРОНБОН)))0. гг(лй Доетнй(еннй нъй(ноГО Вффектй неоокойнмо В КВЧЕЕТВЕ ПйРЯМЕТРОВ фУНКГЦ)Н НСПОЛЬЗОБгттЬ УКЯЗйТСЛН 1ГЯ соотйетстВТ(01цне перемен)1ые„т.е.
ЛередйВять В фупкцн)О йг(Реей ПВРеменнь)к, тнйиеннл котоРык тРео1:етел пом(.нлть: Уослнмел В рйботос)к)собностн дянноьт) варианта 11Я етйндйртный ЛОГОк ВыВОдй бУдет Быв(,дено) Г /, )1 .-.- д, П '" 1'И- )).', И>Р 6,2.1. РЕКУРСт баев 1)ЯПВ) «ПСС) «1)В 0) ВС).)ЗВП 50 < .".) )т)-1:; Заким Образом, лля Обсспсчсиия пспосрсдствсииодо дос)ъпа к Обьектам В Вызыввк)ц)е)1 фъикции ~в «и)стности, дт)я: модифика)1ии ик зиа~)сиий) с)кп Ветствуто)цие параметры ',-, дол)кпы псрсдаваться В Видс ъуказатслей на 3 Б1 Ооьскты. ЦОН51тие рекурсии. 11римсры рскь'рсивиых Опрсде))внии.
Рекурсия и итерация, Мстъъдика Разрабозки'--~ Рекурсивпых Фучп)ци)ь Задачи. Рекурсия подразъмеваст использовапис В Опрсдслсиии::::-, иеко.вороти попятия саыосо ъи)редслясмо) о пОнятия. )з.:;1 качестве примера рскурсивнОГО Определения Рассмот)Зим Опредслс)тис НОнятия <выра)ксиис> .' ),к > ''= <терм> ~ <Выра)кс))ие> Операция .ВЬ)ра)КСИ) ' <Вьц)ажеиис> <)ерм- " -. " <сп)ело>; <перемсиная> , '<Обра)цсиие к (1)УНКЦИИ> !(<ВЫРВЖСНИС>) в Опредслсици понятия <Выра)квин~ > испОльзътстся Здесь СВМО ОПРСДСЛЯСМОЕ ПОПЯТПС. Р),1)урсиВным мо)кст Оыть и Опрсдслснис ф)икции. Ба)тоиыср. Фът1кцию Вьц1ислсния 015,'Фа)с)ыри)ц)) рекурсивно ыо)киы *)прсдсли 1'ь 1'ак: В втОы Опрсйслснии и; Опрсдсляътся ")срез )у) - ~,).~, т.с. так)кс имеется рскут)сивцос определение.
Заъ)етиы пт) )ъ Ятс фъ икци)0 и' можно Определи и н без использоваиия рскурсии как ПРОизВсдснис послсдовавсльиык цслык чисел От 1* до и. )Якому опрсделспи)о будет соответствовать итеративная рскчизация фуикций. Нсп0льзучощая цикл для вы'п)сте)1ия п1)Оизвсдспия ъквзави)лх чи"с'1 Зп))1)ЪЪ) 1 Привести рек) Рсивиъ)О и итеративиуто рсализациьо фъ"икции 11.'. В))спОльзъ5смся приВсдс1кчыми в))яс определениями фЪИКЦИИ ))', 1~ром))дслир~ итс вычисление Х))св 13;~, Р(тсозт))вийя,рсааиз)ц(и )яя: тйс1 )цгзайпсб '01 и) ).П С (., -*' -" .( 1 рот () == Й .' <-- " 1+-11 У/ЦИКЛ ЛЛЛ БМЧИСЛЕ11й1Л фйКГСОР1)ЕЛС и й)тия механизма ОоэрабОГки ВьсзоВОВ функций р)»й )ИЗВЦ) ' 'с))УСМВТРНВВСТ ДЛЯ КВЯЦКЗ)О ВЬ)ЗОВВ фуйкЦИИ рс'и . ') Нс Пр) ЛУС 4 .'Здание )ВОсГО экзсмплярй этОЙ ЯОкальной псрсмсннои и ),оздйн Вазмеи 1. ме) 1еннс сс В стеке (В стсковом фрсймс функции — Области ИВЫ Я 1 й 1К(И В СТСКС.
ИСПОЛЬЗУСМОЙ З11Я РВ001Ы ФУНКЦИИ). Лиаа)э)ичным Образом Об(эабатывйкэтся и 11й()аыстры фм(ИЦ(ии. ()(ЭИ ВЬ)КОДС ИЗ фУНКЦПИ ВЫДСЛСННйя СЙ В СТ Ке память осв)эб)О)ь)1йстся, Сравните прсдложсннь)с (зсйлизацин с ц)чки зрсния Ид( ЗффеКТИВИОСТИ. МАт'1)(,-,. Р(й стандартном НОГОкс ВВОдй задан текст (последовательность символов, заканчивакоп(аяся точкой;; ГОчка В тскст нс Входит), Нй с1йндйртный пОтОк Вывод$:: Вывести этот текст в обрапеом порядке. ()ривсдеы рекурсивнуьо рейлизацик) решения задачи. ЪО'(С( цт; пт „е)1 1))О) С( йс к )«-()) 1 .' ) ВВОД ОИХ) Б ОЛН (Эу'1 Г)С ГСЦ 1 ); У УРЕЕЭУР01)в)И) Зй ВЫБОН ДЛЯ -~р- б т;:н у ГОСТСВЛВ1КСЛ СИХМВОЛОВ )ЭС„П -б (""-.:", О()) „))УНЫ)ГВРД 010)НОЛТ ) (р)эм)х))слир) йте Рйбозу функции Г) В )(1.",: с Ок на примере тскстй "'с(эоб.
"„ При рй'.)рйб01'ье рекурсивных фупьц)ьй целссообэрйзн() с-)еду)рцк.й мезо'п)кс ~.йк правило Гечо рекурсл(вной 11)уикции содержит Условный Оператор 3. Г, однй из Вствсй котОРОГО (нс)эекурсивная) Оосспсчивйс1 ВыхОд из реку()сии (эта ВстВь (к;йзизуст ОорабОтку' НРОстсйтвих случйсВ исхОЛиых данных). а в ГО(хая (рекурсивная) рсйлизус7 Обработку всех )зстт01ьных случаев исходных д~нных. используя при Гпом реку(эсивный ~ызов сймой ОпрсдсляемоЙ функции. )з рассмзп рснных Выше примерах Выход нз рскурси)1 Оосснсчнвйстся при Обраоотк)'.
ситуации Г) < . Л))Я фУНКЦНН ВьпьислснпЯ ч)йкторийлй и снтУВЦНН ВВОДИ точки Для 17)уикции;)т ' пь кск, ))О рсктрсивной Встви (нй п()имсре функцип рс7пь Тс ) осуц(сствляс)ся непосредственная Оорйботкй одно)О из исходных значений (В данном случае "екусцего сиыв))лй), для обраоотки оставц1ихсЯ значепий ИЬПУ Зоз)с ~ся Р КУРСНВН11И ВЫ К)д фУНЬЦИИ (-.РЬВНИВВЯ РСКУРСНВ))ЫЙ И НТСРВТНВНЫЙ ПОДХОДЫ К Рс"лиза17ии функции, следует отметить, что несомпснным достоинс)вом ректрсивной реализация Является ее 71")ДНО)СТЬ И КОМПВКП1ОС)ь.
ОСООСННО ХОР)И00 З10 ВИЛИС 1ПРИ Раооткс ст(эукту(э данных, прсдпола1'йкицих Вну 1(эи ссОя Р"'урсикь таких кйк списки, деревья и т.д, Однако за счет на101адных расхОЛОВ иа Обеспечение рекурсивных Вызов0$, функции рекурсивная регон1за11ия 1ьрОЙГрь1вает итеративн1зьт зффективносги как ЙО намкти. Яаь и но бь1строле1ъстви10 -- гп1:„е 111Й1пт1иц 5 3,-1. Рскурсйвно 01тисать функнико Вы Ц1сленив ъп ДЯЯ ц1»ственно1'О х Ьт ";" 111 и Цело' О п1 5,3П. Описать функ1тию. Иоторав провервст, обладает1 лй целое неотр1ецйтельное числО й ъказанным сВОйстВОм. ф, случае полОгкительнОГО Ответа функция ВОЗВрагцает значение'.;.
1 и б В протйьч10м слъчае. СВ011ства: а) и яВляется пОлным квад)1атом, Ь) о ЯВЛЛЮТСЯ п)ктстым числом, с) и ЯВПЯетск степенью числа 3, 53.2. Программа. На стандартном потоКЕ ВВОДЯ Задано, число й *ъ1Т > б) и ЙОслюдова1ельнОсть Йз и целых чксель'1 ОГЦ1сав соответствъ101цу10 фмнкцикх найти количество-; злеыентйв ййслюдовательнбсти, явля10ц1ихся: а) числамн Фнбона~1 1Й (за11акътсЯ соотй01лепи1."м Га 3~ Г1 )» ть! ' »» - 1' Вью О) пал ин,дроъьамн. суммь* цифр ВЦОГО числа, максймальнучо цифрЪ В десятичной записи у количество нечетных цифр В десятнчи011 записи'", 1 ПРЙ П--1), ПРВ П'-П х ' х " ' при и " О. Протестировать з Гу функцио на полходкгцйх 1габорах ВКОдных данных.
5.3.5. Рекурсивнг1 описать функцйго с1п1, ГД где О ~-; 1н '. л для Вьгчислсння биномиальнОГО козффицйейта Ср *' ЛО ФОРМУЛЕ 1',.„' .= С„" =: 1, ».;," == С„.1"" " С',.1'" при р к Гп к п, 5.3.6. Программа, Рекърсйв1ГО описать функ1тйй1 вь1числе11ЙЯ ИЗД1п, 1111 - Йаиболыйего Об1цего делитела ЙВОТ)1нцательных цель1х чисел и и п1, Осноъвм1ну1ъз на соотногиений 110„71п, 1111 =- 11ОД1п1, ГА гд» Г вЂ” остаток от деления и на пь "».
юе помогцыО на1)1ти найболыййй Оогцйй 4'-"'Йтсль натъгр1ьлы1ых чисел О и Ь. С:равнить эйфсктйВЙОсть ръ»къ31сивиой Й ЙерскърсивнОЙ реализаций фъ*'нкцгн1 Вь1 "1ислення 11ОД. 53.7. Программа. Рекурсивно опнсгпь функцньо Ь1 'ЙЙ ленйЯ Н6Д1пь па пл „пд,/, Где 1п > ВОСНОЛЬЗОВВВЙ1ЙСЧ ДЛЯ .", ТОГО СООТН01ЙЕНИЕм: 110»11П1, Па ПЗ .
П ) ИУД~11Г)Д1П1 ПЗ 11Л, П1 М П11 к =' 3, 4, ..., 1и. С ломовцьво ЭГОО 1Ъэрикпии пййтй И1/ц Гпь йв пь, ПГЛ1. 5.3.8. ЛРОГрйыма. Числа Фибоначчп ззда1отс"" 13 ~1 И 1'ЙЯ. ЧТО В ЗЗПИСИ ф01ЭМЗЛЫ НСГ 01ПИООК, ОПИСЗТЬ , Вычисзя101цэркэ зийчспис 'этОЙ формулы.