Рекурсивная функция поиска НОД возвращает непонятное число - Free Pascal

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

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

Программа. Полностью. Выводит на экран: 4207524 При замене последней строки в функции nod := x на writeln(x) выводит правильный НОД. Что не так?
Листинг программы
  1. program nodmod;
  2. function nod(x, y: longint): longint;
  3. begin
  4. if (y > 0) then
  5. nod(y, x mod y)
  6. else
  7. nod := x;
  8. end;
  9. begin
  10. writeln(nod(105, 25));
  11. end.

Решение задачи: «Рекурсивная функция поиска НОД возвращает непонятное число»

textual
Листинг программы
  1. function nod(x, y: longint): longint;
  2. begin
  3.    if (y > 0) then
  4.      nod(y, x mod y)
  5.    else
  6.      nod := x;
  7. end;

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

В данном коде написана рекурсивная функция поиска НОД (наибольшего общего делителя) двух чисел. Список действий в коде:

  1. Проверить, больше ли значение переменной y нуля.
  2. Если y больше нуля, то выполнить рекурсивный вызов функции nod с аргументами y и (x mod y).
  3. Если y меньше или равно нулю, то присвоить переменной nod значение x.
  4. Конец функции. В данном коде используются следующие переменные:
  5. x - аргумент функции, значение которого уменьшается на каждом шаге рекурсии.
  6. y - аргумент функции, значение которого проверяется на больше нуля.
  7. nod - результат выполнения функции, т.е. НОД двух чисел. Код работает корректно, если значения аргументов x и y являются целыми неотрицательными числами.

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


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

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

12   голосов , оценка 4.083 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы