Рекурсивный алгоритм Евклида - 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;
- }
Объяснение кода листинга программы
В данном коде представлен рекурсивный алгоритм Евклида, который находит НОД (наибольший общий делитель) двух чисел. Алгоритм работает следующим образом:
- Если первое число (c) равно второму числу (d), то НОД равен d.
- Если первое число (c) больше второго числа (d), то алгоритм вызывает сам себя, передавая в качестве аргументов разность c и d (c-d) и d.
- Если первое число (c) меньше второго числа (d), то алгоритм вызывает сам себя, передавая в качестве аргументов c и разность d и c (d-c).
В данном коде:
- функция nod() реализует рекурсивный алгоритм Евклида
- в функции main() создаются две переменные x=45 и y=63, которые передаются в функцию nod()
- результат работы функции nod() выводится на экран
- после этого вызывается функция system(
PAUSE
), которая приостанавливает выполнение программы до нажатия клавиши - в конце программы возвращается 0, что означает успешное выполнение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д