Реферат: Рекурсия
Else WriteLn('Строка не является палиндромом')
End.
/* программа на языке C */
#include <stdio.h>
#include <conio.h>
#include <string.h>
char s[100];
int pal(char s[100]);
void main()
{ clrscr();
printf("\nВведитестроку: "); gets(s);
if (pal(s)) printf("Строка является палиндромом");
else printf("Строка не является палиндромом");
}
int pal(char s[100])
{ int l; char s1[100];
if (strlen(s)<=1) return 1;
else {l=s[0]==s[strlen(s)-1];
strncpy(s1, s+1, strlen(s)-2);
s1[strlen(s)-2]='\0';
return l&&pal(s1);}
}
Задание. Используя аналогичный подход, определите, является ли заданное натуральное число палиндромом.
Подводя итог, заметим, что использование рекурсии является красивым приёмом программирования. В то же время в большинстве практических задач этот приём неэффективен с точки зрения расходования таких ресурсов ЭВМ, как память и время исполнения программы. Использование рекурсии увеличивает время исполнения программы и зачастую требует значительного объёма памяти для хранения копий подпрограммы на рекурсивном спуске. Поэтому на практике разумно заменять рекурсивные алгоритмы на итеративные.
Контрольные вопросы и задания
Какое определение называется рекурсивным? Приведите собственные примеры рекурсивных определений.
Какой вспомогательный алгоритм (подпрограмма) называются рекурсивными? Приведите собственные примеры содержательных задач, где для решения может быть использован рекурсивный вспомогательный алгоритм.
Что такое граничное условие и каково его назначение в рекурсивной подпрограмме?
Что такое рекурсивный спуск?