5 Тапсырма
Толық оң сандар факториалын есептептеудің рекурсивті тәртібін жазыңыз (яғни белгіленетін сандарын шығару).
Шешім. Теңсіздікті қолданамыз .
procedure factorial (n: integer; var fact: integer);
| { n факториал санына тең fact қойыңыз}
begin
| if n=1 then begin
| | fact:=1;
| end else begin {n>1}
| | factorial (n-1, fact);
| | {fact = (n-1)!}
| | fact:= fact*n;
| end;
end;
Процедура-функцияларды падаланып төмендегідей жазамыз:
function factorial (n: integer): integer;
begin
| if n=1 then begin
| | factorial:=1;
| end else begin {n>1}
| | factorial:= factorial (n-1)*n;
| end;
end;
Функцияның ішкі сипатында factorial атынын екі жақтылықта пайдалануына ерекше көңіл бөліңіз ол айнымалы және шақырылатын рекурсивті функцияларды белгілейді.Біздің жағдайда олар атынан кейін жақшамен айрылып тұр, ал егер функция параметірсіз болса, қиын болатын еді. (Стандарттық, бірақ қиын табылатын қателер болып тұрады, егер бағдарлама авторы айнымалы мағынасын пайдаланатын болса, онда компиляторды бұл жерде рекурсивті шақырылым ретінде көреді).
6 Тапсырма
Әдетте факториалды екі нөлді анықтау үшін қолданылады, деп есептейді. Бағдарламаны сәйкесінше ауыстырыңыз.
7 Тапсырма
Бағдарламаның рекурсивті көтерілуін толық кері деңгейде жазыңыз.
8 Тапсырма
Қажет болған жағдайда рекурсия терендігі аспаған жағдайда, онда – деңгей көрсеткіші.
9 Тапсырма
"Ханой мұңаралары" ойыны келесі кезеннен тұрады. Үш өзек бар. Оларды біріншісіне сақинасынан тұратын пирамида киілген.(үлкен сақиналары астынан, кішілері үстінен). Сақиналарды басқа өзекке ауыстыру керек. Сақиналарды өзектен өзекке ауыстырып отыруға болады, бірақ кіші сақинаның үстіне үлкендерін қоюға болмайды. Әрекетті қажет ететін бағдарламаны құрастырыңыз.
Төменгі төбе түбір деп аталады.Әр төбеден екі сызық таралуы мүмкін: солға жоғары және оңға жоғары. Төбелер сызықтарынын баратын жерін төбелердің бастапқы сол және оң жақ ұлдары деп атайды. Төбенің екі ұлы болуы мүмкін, кей кезде бір ұлы болады (сол және оң жақ). Оның ұлдары болмауы да мүмкін, бұл жағдайда оны парақ деп атайды.
- екілік бұтақтын төбесі болсын. Ол өзі ұлдары, немерелері және шөберелерімен түбірінде бұтағы бар - " бұтақтар ұрпақтарын" құрайды.
Келесі есептерде бұтақ төбелері толық оң сандармен нөмірленген.
Барлық төбелер нөмірлері әр түрлі болып келеді. Біздің ойымызша түбір нөмірі root ауысымында сақталған. Екі жиым бар:
of integer.
Төбенің сол және оң жақ ұлдарының нөмірімен и нөміріне сәйкес болып келеді. Егер төбе нөмірінің сол және оң жақ ұлдары болмаса, онда (сәйкесінше ) 0 тең. (Дәстүр бойынша бағдарламаларды жазғанда нөлдің орнына нөлге тең nil тұрақтылығы қолданылады).
Бұл жерде – жеткілікті түрде натурал сан болып келеді (төбелердің барлық сандары аспайды). Белгілейік, 1 ден дейінгі барлық сандар төбелер нөмірі болу міндетті емес және төбелер нөмірінің орналасуымен байланысты болмайды. (яғни l және r жиынтығындағы мәліметтер бөлігі- бұл қоқыс).
Достарыңызбен бөлісу: |