Skip to content

Instantly share code, notes, and snippets.

@Helen460
Created April 19, 2025 18:12
Show Gist options
  • Save Helen460/d6a33764d46443c2155469e25c247b41 to your computer and use it in GitHub Desktop.
Save Helen460/d6a33764d46443c2155469e25c247b41 to your computer and use it in GitHub Desktop.
8DZ
// 1) Від 1 до n.
// Дано натуральне число n.Виведіть усі числа від 1 до n.
// Вхід: 5
// Вихід : 1 2 3 4 5
#include <iostream>
#include <windows.h>
using namespace std;
void show(int from, int to) {
cout << from << " ";
if (from < to) {
show(from + 1, to);
}
}
int main() {
int n = 5;
show(1, n);
cout << "\n";
}
// 2) Від A до B.
//Дано два цілих числа A і B.Виведіть усі числа від A до B включно, у порядку зростання, якщо A < B, або в порядку зменшення в протилежному випадку.
//Вхід: 5 1
//Вихід : 5 4 3 2 1
#include <iostream>
#include <windows.h>
using namespace std;
void display(int a, int b) {
cout << a << " ";
if (a < b) {
display(a + 1, b);
}
else if (a > b) {
display(a - 1, b);
}
}
int main() {
int A = 5, B = 1;
display(A, B);
cout << "\n";
}
//3) Точна ступінь двійки.
//Дано натуральне число N.Виведіть слово YES, якщо число N є точною ступінню двійки, або слово NO в протилежному випадку.
//Операцією піднесення до степеня користуватися не можна!
//Вхід: 3 8
//Вихід : NO YES
#include <iostream>
#include <windows.h>
using namespace std;
void checkPowerOfTwo(int n) {
if (n == 1) {
cout << "YES\n";
return;
}
if (n % 2 != 0 || n == 0) {
cout << "NO\n";
return;
}
checkPowerOfTwo(n / 2);
}
int main() {
int a = 3, b = 8;
checkPowerOfTwo(a);
checkPowerOfTwo(b);
}
// 4) Сума цифр числа.
// Дано натуральне число N.Обчисліть суму його цифр.
// При вирішенні цієї задачі не можна використовувати рядки, списки, масиви, глобальні змінні(ну й цикли, звісно).
// Вхід: 179
// Вихід : 17
#include <iostream>
#include <windows.h>
using namespace std;
int sum(int n) {
if (n == 0) return 0;
return (n % 10) + sum(n / 10);
}
int main() {
int n = 179;
cout << sum(n) << "\n";
}
// 5) Цифри числа справа наліво.
// Дано натуральне число N.Виведіть усі його цифри по одній, у зворотному порядку, розділяючи їх пробілами.
// При вирішенні цієї задачі не можна використовувати рядки, списки, масиви(ну й цикли, звісно).Дозволяється тільки рекурсія та цілецілочисельна арифметика.
// Вхід: 179
// Вихід : 9 7 1
#include <iostream>
#include <windows.h>
using namespace std;
void printReversed(int n) {
cout << (n % 10) << " ";
if (n >= 10)
printReversed(n / 10);
}
int main() {
int n = 179;
printReversed(n);
cout << "\n";
}
// 6) Цифри числа зліва направо.
// Дано натуральне число N.Виведіть усі його цифри по одній, у звичайному порядку, розділяючи їх пробілами або новими рядками.
// При вирішенні цієї задачі не можна використовувати рядки, списки, масиви(ну й цикли, звісно).Дозволяється тільки рекурсія та цілецілочисельна арифметика.
// Вхід: 179
// Вихід : 1 7 9
#include <iostream>
#include <windows.h>
using namespace std;
void printForward(int n) {
if (n >= 10)
printForward(n / 10);
cout << (n % 10) << " ";
}
int main() {
int n = 179;
printForward(n);
cout << "\n";
}
// 7) Реверс числа.
// Дано число n, десятеричний запис якого не містить нулів.Отримайте число, записане тими ж цифрами, але в протилежному порядку.При вирішенні цієї задачі не можна використовувати цикли, рядки, списки, масиви, дозволяється тільки рекурсія та цілецілочисельна арифметика.Функція повинна повертати ціле число, яке є результатом роботи програми, виводити число по одній цифрі не можна.
// Вхід: 179
// Вихід : 971
#include <iostream>
#include <windows.h>
using namespace std;
int reverseNumber(int n, int result = 0) {
if (n == 0)
return result;
return reverseNumber(n / 10, result * 10 + n % 10);
}
int main() {
int n = 179;
cout << reverseNumber(n) << "\n";
}
// 8) Паліндром.
// Дано слово, що складається тільки з малих латинських літер.Перевірте, чи є це слово паліндромом.Виведіть YES або NO.
// При вирішенні цієї задачі не можна використовувати цикли.
// Вхід: radar yes
// Вихід : YES NO
#include <iostream>
#include <windows.h>
using namespace std;
bool isPalindrome(const char* str, int left, int right) {
if (left >= right) return true;
if (str[left] != str[right]) return false;
return isPalindrome(str, left + 1, right - 1);
}
int length(const char* str, int i = 0) {
if (str[i] == '\0') return i;
return length(str, i + 1);
}
int main()
{
char s1[100], s2[100];
cin >> s1 >> s2;
if (isPalindrome(s1, 0, length(s1) - 1)) cout << "YES\n";
else cout << "NO\n";
if (isPalindrome(s2, 0, length(s2) - 1)) cout << "YES\n";
else cout << "NO\n";
}
// 9) Числа Фібоначчі.
// Напишіть функцію для обчислення елементів ряду чисел Фібоначчі, спираючись на рекурентне рівняння F(n) = F(n - 1) + F(n - 2).
// Функція приймає індекс числа, повертає значення числа.
#include <iostream>
#include <windows.h>
using namespace std;
int fib(int n) {
if (n == 0) return 0;
if (n == 1) return 1;
return fib(n - 1) + fib(n - 2);
}
int main()
{
int n;
cin >> n;
cout << fib(n) << "\n";
}
// 10) Ступінь числа.
// Обчисліть ступінь числа, використовуючи рекурсію.У функцію передається 2 параметри — число і ступінь.
#include <iostream>
#include <windows.h>
using namespace std;
int power(int a, int b) {
if (b == 0) return 1;
return a * power(a, b - 1);
}
int main()
{
int a, b;
cin >> a >> b;
cout << power(a, b) << "\n";
}
// 11) Сума чисел у діапазоні.
// Обчисліть суму чисел у певному діапазоні.Початок та кінець діапазону задаються параметрами функції.
#include <iostream>
#include <windows.h>
using namespace std;
int sumRange(int a, int b) {
if (a > b) return 0;
return a + sumRange(a + 1, b);
}
int main()
{
int from, to;
cin >> from >> to;
cout << sumRange(from, to) << "\n";
}
// 12) НОД.
// Напишіть рекурсивну функцію для знаходження найбільшого спільного дільника двох цілих чисел.
#include <iostream>
#include <windows.h>
using namespace std;
int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}
int main()
{
int a, b;
cin >> a >> b;
cout << gcd(a, b) << "\n";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment