Если что-то не получилось — можно подсмотреть решение. Скорее всего на следующий день вы это решение забудете — так что это упражнение можно снова будет попытаться реализовать. Рекурсия довольно нетипичная для мозгов задача, так что не стесняйтесь повторять одно и тоже упражнение несколько раз. Варианты решений есть снизу.
- печать чисел от 1 до n
- печать четных/нечетных чисел до n
- возведение n в степень
- печать n! (факториал — произведение чисел до n)
- печать суммы чисел от n до m
- печать чисел Фибоначчи (каждое следующее — сумма двух предыдущих)
- печать чисел Коллатца (чётное: n/2; нечетное: n*3+1)
- копирования строки из одной в другую
- печать элементов массива
- печать строки наоборот
- конвертация десятичного числа в двоичное
- бинарный поиск
- сортировка «пузырьком»
- сортировка слиянием
Печать чисел от 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; }