Составить рекурсивную функцию вычисления НОД - C (СИ)

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

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

Даны натуральные числа n и m; Найти НОД(n,m). составить рекурсивную функцию вычисления НОД, основанную на соотношении НОД(n, m)=НОД(m, r), где r- остаток от деления n на m(n>m)

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

textual
Листинг программы
#include<stdio.h>
#include<conio.h>
 
int gcd(int, int);
 
int main(void)
{
   int n, m;
   scanf("%d%d", &n, &m);
   printf("GCD=%d", gcd(n, m));
   getch();
   return 0;
}
 
int gcd(int a, int b)
{
   if(a%b==0 && b%10==0)
      return b/2;
   if(a%b==0)
      return b;
   else
      return gcd(a, a%b);
}

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

  1. Включаем необходимые заголовочные файлы для работы с I/O и константами.
  2. Объявляем функцию gcd(int, int), которая будет вычислять НОД двух целых чисел.
  3. В функции main() считываем два целых числа с помощью функции scanf() и сохраняем их в переменные n и m.
  4. Вызываем функцию gcd(n, m) и выводим результат на экран с помощью функции printf().
  5. Ждем нажатия клавиши с помощью функции getch() и завершаем работу программы.
  6. В функции gcd(int, int) выполняем проверку на базовый случай: если a%b==0 и b%10==0, то возвращаем b/2.
  7. Если a%b==0, то возвращаем b.
  8. Иначе, рекурсивно вызываем функцию gcd(a, a%b) и возвращаем результат.

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


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

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

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