Ш. И. Раззоќов, М. Д. Юнусова turbo pascal алгоритмик тилида дастурлаш касб-ћунар коллеж талабалари учун ўќув ќўлланма


Download 1.74 Mb.
bet70/96
Sana30.04.2023
Hajmi1.74 Mb.
#1413831
1   ...   66   67   68   69   70   71   72   73   ...   96
Bog'liq
Turbo Pascal назария

А
abn(2)
ААВВВ
ни босиб чиќаради.
10.2-расм

Юќорида кўрилган масалани рекурсив процедурадан фойдаланмасдан ћам ечиш мумкин эканлигини таъкидлаб ўтамиз.


Яна бир мисол курамиз.
n соннинг факториалини ћисобловчи рекурсив функцияни тузамиз. Соннинг факториали ќуйидаги формула бўйича аниќланади:

10 сонининг факториалини топиш керак бўлсин. Агар 9! ќиймати маълум бўлса, келтирилган формуланинг иккинчи ќисми бўйича 10! ќийматни топиш жуда осон, 9! ќиймат ќандай топилади? 8! ќиймат маълум бўлса, 9! ќийматни ћам худди ўша формула билан топиш мумкин, 8! ќиймат ќандай топилади? Ћисоблаш жараёни охирида 1! ќиймат ќандай топилади? - деган савол тугилади. Бу саволга формуланинг биринчи ќисми (n!=1) агар n=1 бўлса, жавоб беради.
Мулоћазамизни дастурлаш тилида езиб,
function f(p:integer) : integer;
begin
if n=1
then f:=1
else f:=n*f(n-1)
end
функцияни оламиз.
Факториал ва унга мос рекурсив функциянинг ўзига хос хусусияти шундаки, соннинг факториалини аниќловчи формулада яна ўша факториални аниќлайдиган формула ишлатилади, лекин параметрнинг ќиймати битта кам бўлади. Айнан бир ќийматнинг факториалини ћисоблаш учун ћисоблаш жараенини, токи параметрнинг ќиймати бир бўлгунга ќадар ќайтадан такрорлаш керак. Агар 1! алоћида аниќланмас экан (формуланинг биринчи ќисмида езилган), натижани олишнинг имкони бўлмайди: ћисоблаш ћеч ќачон тугамайди.
Навбатдаги мисол. Фибоначчи сонлари. 1202 йил итальян математиги Фибоначчи шундай масалани ечди: «бир жуфт ќуенлар ћар ойда иккитадан (ургочи ва эркак) насл беради, улар ћам 2 ойдан кейин насл беради. Агар йил бошида бир жуфт ќуен бўлса, йил охирида ќуенлар ќанча бўлади?»
Йил бошидан ћисобланганда n ойдан кейинги ќуенлар жуфти сонини F (n) белгиси билан белгилаймиз. Масала шартига кўра йил бошида бир жуфт ќуен бўлган, бир ойдан кейин икки жуфт ќуен бўлган. Демак,
F(0)=1; F(1)=2
Иккинчи ойдан кейин бир жуфт насл оламиз, яъни йил бошида ќанча бўлса, шунча оламиз. Демак,
F(2)=F(0) + F(1)
Худди шундай мулоћаза юритиб, ќуйидаги боѓланишни оламиз:
F(n)=F(n-2) + F(n-1)
Демак, n ойдан кейин ќуенлар сонини ќуйидагича ћисоблаш мумкин:
F(0)=1; F(1)=2;
F(n)=F(n-2) + F(n-1)
Бу мулоћазаларни Турбо Паскал тилида ёзамиз

Download 1.74 Mb.

Do'stlaringiz bilan baham:
1   ...   66   67   68   69   70   71   72   73   ...   96




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling