Реферат: Рекурсия

void main()

{

clrscr();

printf("\nКоличество элементов массива? "); scanf("%d", &n);

printf("\nВ сформированном массиве %d чисел:\n", n);

randomize();

for (i=0; i<n; i++)

{a[i]= -10+random(21); printf("%d ", a[i]);}

printf("Сумма: %d", summa(n-1, a));

}

int summa(int N, int a[100])

{

if (N==0) return a[0]; else return a[N]+summa(N-1, a);

}

Пример 5. Определить, является ли заданная строка палиндромом, т.е. читается одинаково слева направо и справа налево.

Идея решения заключается в просмотре строки одновременно слева направо и справа налево и сравнении соответствующих символов. Если в какой-то момент символы не совпадают, делается вывод о том, что строка не является палиндромом, если же удается достичь середины строки и при этом все соответствующие символы совпали, то строка является палиндромом. Граничное условие — строка является палиндромом, если она пустая или состоит из одного символа.

{программа на языке Pascal}

Program Palindrom;

{Рекурсивная функция}

Function Pal(S: String) : Boolean;

Begin

If Length(S)<=1

Then Pal:=True

Else Pal:= (S[1]=S[Length(S)]) and Pal(Copy(S, 2, Length(S) - 2));

End;

Var S : String;

{Основная программа}

Begin

Write('Введите строку: '); ReadLn(S);

К-во Просмотров: 1169
Бесплатно скачать Реферат: Рекурсия