Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Рекурсия

Автор: Zedefen 30.09.2010 21:37

Выполнить необходимую обработку, при этом описать рекурсивную процедуру или
функцию, исходя из условия задачи. Исходные данные задать самостоятельно, учитывая специфику
задачи.
Дано натуральное число n. Определить произведение его цифр.

Пожалуйста помогите решить!

Автор: Client 30.09.2010 21: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.
Немного потестил, вроде правильно.

Автор: Zedefen 30.09.2010 21:48

Цитата(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 30.09.2010 21:53

ударило в мозг, что я про знак числа забыл совсем. Добавь проверку на отрицательность числа, если надо

Автор: Zedefen 30.09.2010 21:55

Хорошо

Автор: chesser 5.10.2010 17:08

Сама задача на натуральные числа, но если число может быть и отрицательным, то:


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.