Язык Си: упражнения на рекурсию


Если что-то не получилось — можно подсмотреть решение. Скорее всего на следующий день вы это решение забудете — так что это упражнение можно снова будет попытаться реализовать. Рекурсия довольно нетипичная для мозгов задача, так что не стесняйтесь повторять одно и тоже упражнение несколько раз. Варианты решений есть снизу.

  1. печать чисел от 1 до n
  2. печать четных/нечетных чисел до n
  3. возведение n в степень
  4. печать n! (факториал — произведение чисел до n)
  5. печать суммы чисел от n до m
  6. печать чисел Фибоначчи (каждое следующее — сумма двух предыдущих)
  7. печать чисел Коллатца (чётное: n/2; нечетное: n*3+1)
  8. копирования строки из одной в другую
  9. печать элементов массива
  10. печать строки наоборот
  11. конвертация десятичного числа в двоичное
  12. бинарный поиск
  13. сортировка «пузырьком»
  14. сортировка слиянием

Печать чисел от 1 до n при помощи рекурсии (вариант Штукенции)

// print numbers from 1 to n
#include <stdio.h>
#include <cs50.h>

int printn (int n);

int main (void)
{

    int n = get_int ("Number: ");
    printn (n);

}

int printn (int n)
{

    if (n == 1)
    {
        printf ("%i\n", n);
        return 0;
    }

    else
    {
        printn(n-1);
        printf ("%i\n", n);
        return 0;
    }

    return 0;
}

Печать четных / нечетных чисел до n (вариант Штукенции)

#include <stdio.h>

int number (int n_max);

int main (void)
{

int n_max;
printf("Max number: ");
scanf( "%d", &n_max);

int num = number(n_max);

return 0;
}

int number (num)
{

    if (num == 0)
    {
        printf ("0\n");
        return 0;
    }
    else
    {
        // print even numbers
        
        if ((num % 2) == 0)
        {
            printf ("%i\n", num);
        }
        number (num - 1);
    }

    return 0;
}

Запись опубликована в рубрике С (Си). Добавьте в закладки постоянную ссылку.

Добавить комментарий

🇬🇧 Attention! Comments with URLs/email are not allowed.
🇷🇺 Комментарии со ссылками/email удаляются автоматически.