Рекурсия: сколько есть программ, которые преобразуют заданное число (по определенному алгоритму) в 24? - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста с решение задачи, я не понимаю как решать рекурсией У исполнителя калькулятора две команды 1) прибавить 1 2) увеличить каждый разряд числа на 1 Например число 23 с помощью команды 2 превратится в 34. Если перед выполнением команды 2 какой-либо цифра равна 9, она не изменяется. Сколько есть программ, которые преобразует числа 24 в число 46? Суть всей программы в том, что мне нужно сделать ее рекурсией и чтобы она проверяла все цифры от (0..999) а не от 24 если не трудно, то с комментарием) Заранее спасибо

Решение задачи: «Рекурсия: сколько есть программ, которые преобразуют заданное число (по определенному алгоритму) в 24?»

textual
Листинг программы
var
  count : integer = 0;
  finish : integer = 46;
 
procedure f(n : integer);
begin
  if n = finish then inc(count)
  else if n < finish then
  begin
    f(n + 1);
    if n < 10 then f(n + 1) // 1 .. 9
    else f((1 + n div 10) * 10 + (1 + n mod 10)); // 10 .. 45
  end;
end;
 
var start : integer;
begin
  write('Начинаем с: '); readln(start);
  f(start); // начинаем с введенного числа. Заканчиваем числом 46
  writeln(count);
end.

Объяснение кода листинга программы

  1. Объявлены две переменные: count типа integer со значением 0 и finish типа integer со значением 46.
  2. Определена процедура f с параметром n типа integer.
  3. В начале процедуры f выполняется проверка: если n равно finish, то значение переменной count увеличивается на 1.
  4. Если n меньше finish, то процедура f вызывается рекурсивно для значения n + 1.
  5. Если n меньше 10, то процедура f вызывается рекурсивно для значения n + 1.
  6. Если n больше или равно 10, то n приводится к виду 10 * (1 + (n div 10)) + (1 + n mod 10).
  7. Затем вызывается процедура f с введенным значением переменной start.
  8. В конце выводится значение переменной count.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы