n
санының факториал мəнін алу үшін, (
n-1
)
санының факториалын
n
санына көбейту қажет. Сонымен қатар, 0!=1 жəне
1!=1 болатыны белгілі.
long fact(long n){
if (n==0 || n==1) return 1;
return (n * fact(n-1));
}
Осы программа үзіндісін қысқартылған түрде былайша жазуға болады:
long fact(long n){
return (n > 1) ? n * fact (n-1) : 1;
}
Рекурсивті функцияларды көп жағдайда рекурсивті алгоритмдерді
ықшамды түрде жүзеге асыру үшін, сонымен қатар, рекурсивті сипатталған
мəліметтердің құрылымдарымен, мысалы, екілік бұтақтармен жұмыс
істеу үшін қолданады (132 б.). Кез келген рекурсивті функцияны рекурсия-
ны қолданбай жүзеге асыруға болады, ол үшін программалаушы барлық
қажетті мəліметтердің сақталуын өзі қамтамасыз ету керек. Рекурсияның
артықшылығы ықшам түрде қысқаша жазылуында болып есептеледі, ал
рекурсияның кемшіліктеріне функцияны қайта шақыруларға жəне оған пара-
метрлер көшірмелерін беруге жұмсалатын уақыт пен жадының шығыны жəне,
ең негізгісі, стектің толып кету қаупі жатады.
Функцияларды қолдана отырып, программаларды құру технологиясы
практикумның [11] жетінші семинарында қарастырылған.
|