Консультация № 42801
12.05.2006, 07:44
0.00 руб.
0 6 4
Здравствуйте, уважаемые эксперты. Есть задача с рекурсией "вывести целое положительное число используя print(n), где n=0..9". Голова уже кипит. Не подскажите ли вы, как организовать эту рекурсивную функцию.

Обсуждение

Неизвестный
12.05.2006, 08:13
общий
это ответ
Здравствуйте, Демченко Артем!

В приложении пример на Паскале.
Печатаются от 9 до 0.
Небольшие изменеия и она будет печатать с 0 до 9.

Приложение:
...function printme(val:integer):boolean;beginif val<0 then exit;writeln(val);printme(val-1);end;...beginprintme (9);readln;end.
Неизвестный
12.05.2006, 11:59
общий
это ответ
Здравствуйте, Демченко Артем!

Вообще-то это делается следующим алгоритмом:

Procedure PrintNum (n : LongInt);
begin
if n < 0 then exit;

if n > 10 then PrintNum (n div 10);

print (n mod 10);
end;
Неизвестный
12.05.2006, 12:01
общий
2KazakhСовсем не в ту степь ответ. Нужно не вывести числа от 0 до 9, а напечатать цифры числа (например, 12345).
Неизвестный
12.05.2006, 14:03
общий
это ответ
Здравствуйте, Демченко Артем!

Если я правильно понял, выводим любое положительное число, но по цифрам, функцией someprint(n);, где n=(0,9);

func (int n)
{
int nn = n%10; //(mod);
int xn = n/10; //(div);
if (n>=10) func(xn);
someprint(nn);
}

Так как вызов рекурсивный функции до вывода цифры, то знаки будут выводиться от старших к младшим, вроде так.
Неизвестный
12.05.2006, 17:25
общий
Значицца не так понял :-(Надо было вопрос поточнее задавать?
Неизвестный
13.05.2006, 22:49
общий
это ответ
Здравствуйте, Демченко Артем!
Не знаю, на каком языке вам нужно, поэтому напишу на абстрактном:

вывод(целое Х)
{
если(Х = 0)
выход;
n = остаток_от_деления Х на 10;
Х = целая_часть_от_деления Х на 10;
вывод(Х);
print(n);
}
Форма ответа