11.12.2008, 00:15
общий
это ответ
Здравствуйте, Heion!
В данном примере считается количество четных цифр и нулей(это если считать сравнение остатка от деления i вместо d на десять опечаткой), для подсчета количества нечетных следует строку if i mod 2=0 then K:=K+1; заменить на if d mod 2<>0 then K:=K+1;
Однако в приведенном примере функция не является рекурсивной. В приложении код рекурсивного варианта вашей функции number.
Прошу учесть. что это лишь один из множества вариантов рекурсивной реализации поставленной задачи, он очень прост в записи, но достаточно сложен в отладке и требователен к ресурсам. Однако для задачи на понимае рекурсии ИМХО в самый раз!
Приложение:
function number(i:integer):integer;
begin
if i < 10 then
if i mod 2 <> 0 then number:=1
else number := 0
else number := number(i mod 10) + number(i div 10);
end;