Рекурсивный алгоритм Евклида - C (СИ)

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

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

Всем привет! Переделайте пожалуйста мой алгоритм Евклида с вычитанием на рекурсивный.
unsigned k = 0;
 
unsigned nod(unsigned c, unsigned d)
{
    while (c != d)
    {
        if (c > d)
            c = c - d;
        else
            d = d - c;
    }
    k = c;
    return c;
}
 
void main()
{
    unsigned a, b;
 
    printf("Vvedite (a): ");
    scanf_s("%u", &a);
    printf("Vvedite (b): ");
    scanf_s("%u", &b);
    nod(a, b);
    printf("NOD: %u", k);
    _getch();
}
Может кто-то помочь? Сам никак не справляюсь,не могу понять просто данную тему. ЗАРАНЕЕ СПАСИБО!!!

Решение задачи: «Рекурсивный алгоритм Евклида»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
unsigned int nod(unsigned int c, unsigned int d)
{
    if (c == d) 
      return d;
    else
    {
      if (c > d)
        return nod(c-d,d);
      else
        return nod(c,d-c);
    }
}
 
int main(int argc, char *argv[])
{
 
  unsigned int x=45, y=63;
  
  printf("%d\n",nod(x,y));
  
  system("PAUSE");  
  return 0;
}

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

В данном коде представлен рекурсивный алгоритм Евклида, который находит НОД (наибольший общий делитель) двух чисел. Алгоритм работает следующим образом:

  1. Если первое число (c) равно второму числу (d), то НОД равен d.
  2. Если первое число (c) больше второго числа (d), то алгоритм вызывает сам себя, передавая в качестве аргументов разность c и d (c-d) и d.
  3. Если первое число (c) меньше второго числа (d), то алгоритм вызывает сам себя, передавая в качестве аргументов c и разность d и c (d-c). В данном коде:
    • функция nod() реализует рекурсивный алгоритм Евклида
    • в функции main() создаются две переменные x=45 и y=63, которые передаются в функцию nod()
    • результат работы функции nod() выводится на экран
    • после этого вызывается функция system(PAUSE), которая приостанавливает выполнение программы до нажатия клавиши
    • в конце программы возвращается 0, что означает успешное выполнение программы

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


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

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

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