Описать рекурсивную функцию digits (s), которая подсчитывает сумму цифр в строке s - Pascal ABC
Формулировка задачи:
Здравствуйте!
Условие задачи:
Описать рекурсивную функцию digits (s), которая подсчитывает сумму цифр в строке s.Решение задачи: «Описать рекурсивную функцию digits (s), которая подсчитывает сумму цифр в строке s»
textual
Листинг программы
function digits(i:byte;s:string):integer;
var sum:integer;
begin
result:=0;
if s[i] in ['0'..'9'] then inc(result,ord(s[i])-48);
if i<length(s) then result:=result+digits(i+1,s);
end;
var s:string;
begin
writeln('Введите строку, содержащую цифры:');
readln(s);
write('Сумма цифр=',digits(1,s));
end.
Объяснение кода листинга программы
- Функция
digits(i:byte;s:string)объявлена как рекурсивная функция, которая принимает два аргумента:i- индекс символа строкиs, иs- сама строка. - Переменная
sumинициализируется значением 0, которое будет использоваться для накопления суммы цифр. - В условии
if s[i] in ['0'..'9'] thenпроверяется, является ли символ в строкеsцифрой от 0 до 9. Если это так, то с помощью функцииord(s[i])-48преобразуется в соответствующий числовой код и добавляется к сумме. - Если
iменьше длины строкиs, то вызывается рекурсивно функцияdigits(i+1,s)для подсчета суммы цифр в следующем символе строки. Результат этого вызова добавляется к сумме. - В основной части программы пользователю предлагается ввести строку, содержащую цифры. Затем выводится сообщение с суммой цифр, подсчитанной функцией
digits(1,s).