Помощь - Поиск - Пользователи - Календарь
Полная версия: Рекурсия
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Zedefen
Выполнить необходимую обработку, при этом описать рекурсивную процедуру или
функцию, исходя из условия задачи. Исходные данные задать самостоятельно, учитывая специфику
задачи.
Дано натуральное число n. Определить произведение его цифр.

Пожалуйста помогите решить!
Client
var
a : integer;

function F (x : integer) :integer;
begin
if (x div 10) > 0 then F := x mod 10 * F(x div 10)
else F := x;
end;

begin
readln(a);
writeln(F(a));
end.
Немного потестил, вроде правильно.
Zedefen
Цитата(Client @ 30.09.2010 20:46) *

var
a : integer;

function F (x : integer) :integer;
begin
if (x div 10) > 0 then F := x mod 10 * F(x div 10)
else F := x;
end;

begin
readln(a);
writeln(F(a));
end.
Немного потестил, вроде правильно.


спс огромное
Client
ударило в мозг, что я про знак числа забыл совсем. Добавь проверку на отрицательность числа, если надо
Zedefen
Хорошо
chesser
Сама задача на натуральные числа, но если число может быть и отрицательным, то:

var
a : integer;
function F (x : integer) :integer;
begin
if abs(x div 10) > 0 then F := abs(x) mod 10 * F(abs(x) div 10)
else F := abs(x);
end;

begin
readln(a);
writeln(F(a));
end.

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.