Консультация № 180420
23.10.2010, 01:13
0.00 руб.
0 5 1
Здравствуйте, уважаемые эксперты!

Помогите, пожалуйста, решить задачу:
Написать рекурсивную программу, печатающую старшую цифру в десятичной записи введенного натурального числа.

(пользуюсь программой ABC)

Обсуждение

давно
Профессор
230118
3054
23.10.2010, 01:54
общий
25.10.2010, 03:39
это ответ
Здравствуйте, verona!

Например, можно написать так:

Код:
function highdigit(n:integer):integer;
var m:integer;
begin
if(n>=10) then
begin
m:=n div 10;
highdigit:=highdigit(m);
end
else
highdigit:=n;
end;
давно
Старший Модератор
31795
6196
23.10.2010, 06:21
общий
tatyana:
Пожалуйста, подскажите, где у Вас рекурсия?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Профессор
401888
1232
23.10.2010, 08:55
общий
Да уж... интересно узнать...
давно
Профессор
401888
1232
23.10.2010, 09:01
общий
Кстати первый вариант можно написать короче и без лишней переменной
Код:
uses crt;
function highdigit(n:integer):integer;
begin
if(n<10) then highdigit:=n
else highdigit:=highdigit(n div 10);
end;
var x:integer;
begin
write('Введите число ');
readln(x);
writeln(highdigit(x));
end.
давно
Академик
320937
2216
23.10.2010, 09:55
общий
Гаряка Асмик:
Доброе утро! Ваш вариант // добавил тестирующую программу
Код:

{ Написать рекурсивную программу, печатающую старшую цифру в
десятичной записи введенного натурального числа. }
//---------------
// 1.В следующей строке была пропущена точка с запятой
// программа не транслируется
function highdigit(var n:integer):integer;
// 2.В предыдущей строке смысловая ошибка, параметр не должен быть var
//---------------

var m:integer;
begin
if(n>10) then
// 3. В предыдщей строке ошибка, должно быть >=
begin
m:=n div 10;
highdigit:=highdigit(m);
end
else highdigit:=n;
end;

var
n: integer;
begin
n:=10;
writeln('Старшая цифра в числе', n, ' равна ', highdigit(n));
// следующая строка не компилируется из-за ошибки 2
// writeln('Старшая цифра в числе', 10, ' равна ', highdigit(10));
end.

Пример работы
Код:
Старшая цифра в числе10 равна 10

С уважением.
Форма ответа