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

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

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

Всем привет! Переделайте пожалуйста мой алгоритм Евклида с вычитанием на рекурсивный.
Листинг программы
  1. unsigned k = 0;
  2. unsigned nod(unsigned c, unsigned d)
  3. {
  4. while (c != d)
  5. {
  6. if (c > d)
  7. c = c - d;
  8. else
  9. d = d - c;
  10. }
  11. k = c;
  12. return c;
  13. }
  14. void main()
  15. {
  16. unsigned a, b;
  17. printf("Vvedite (a): ");
  18. scanf_s("%u", &a);
  19. printf("Vvedite (b): ");
  20. scanf_s("%u", &b);
  21. nod(a, b);
  22. printf("NOD: %u", k);
  23. _getch();
  24. }
Может кто-то помочь? Сам никак не справляюсь,не могу понять просто данную тему. ЗАРАНЕЕ СПАСИБО!!!

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. unsigned int nod(unsigned int c, unsigned int d)
  5. {
  6.     if (c == d)
  7.       return d;
  8.     else
  9.     {
  10.       if (c > d)
  11.         return nod(c-d,d);
  12.       else
  13.         return nod(c,d-c);
  14.     }
  15. }
  16.  
  17. int main(int argc, char *argv[])
  18. {
  19.  
  20.   unsigned int x=45, y=63;
  21.  
  22.   printf("%d\n",nod(x,y));
  23.  
  24.   system("PAUSE"); 
  25.   return 0;
  26. }

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

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

  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

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

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

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