Приведите примеры рекурсии - C (СИ)

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

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

наведите примеры рекурсии. спасибо.

Решение задачи: «Приведите примеры рекурсии»

textual
Листинг программы
#include <stdlib.h>
#include <stdio.h>
 
// рекурсивная функция вычисляет НОД двух натуральных чисел
int gcd( int a, int b ) {
    return b ? gcd( b, a % b ) : a;
}
 
int main() {
    int a, b;
    printf( "Введите два целых числа " );
    scanf( "%d%d", &a, &b ); // отсутствует проверка ввода
 
    if ( a == 0 && b == 0 ) {
        printf( "НОД данных чисел = 0\n" );
        return EXIT_SUCCESS;
    }
    if ( a == 0 || b == 0 ) {
        printf( "НОД данных чисел не существует!\n" );
        return EXIT_SUCCESS;
    }
 
    printf( "НОД данных чисел = %d\n", gcd( abs( a ),abs( b ) ) );
    return EXIT_SUCCESS;
}

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

  1. В данном коде реализована рекурсивная функция gcd(int a, int b), которая вычисляет НОД (наибольший общий делитель) двух натуральных чисел.
  2. Если одно из чисел равно 0, то НОД вычисляется по формуле: НОД(a,b) = НОД(b,a mod b).
  3. Если оба числа равны 0, то НОД вычисляется как 0.
  4. Если одно из чисел равно 0, то НОД не существует и выводится сообщение об этом.
  5. Если оба числа не равны 0, то выводится сообщение с найденным НОД.
  6. В функции main() требуется ввести два целых числа.
  7. Если введенные числа удовлетворяют условию (не оба равны 0), то вызывается функция gcd(abs(a),abs(b)).
  8. Результат вычисления функции gcd() выводится на экран.
  9. Если введенные числа не удовлетворяют условию (оба равны 0 или оба не равны 0), то выводится сообщение об ошибке и программа завершается.

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


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

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

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