Составить рекурсивную функцию вычисления НОД - 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);
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с I/O и константами.
- Объявляем функцию gcd(int, int), которая будет вычислять НОД двух целых чисел.
- В функции main() считываем два целых числа с помощью функции scanf() и сохраняем их в переменные n и m.
- Вызываем функцию gcd(n, m) и выводим результат на экран с помощью функции printf().
- Ждем нажатия клавиши с помощью функции getch() и завершаем работу программы.
- В функции gcd(int, int) выполняем проверку на базовый случай: если a%b==0 и b%10==0, то возвращаем b/2.
- Если a%b==0, то возвращаем b.
- Иначе, рекурсивно вызываем функцию gcd(a, a%b) и возвращаем результат.