Проверить, является ли число N точной степенью двойки (Java -> Си) - C (СИ)
Формулировка задачи:
Точная степень двойки
Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или слово NO в противном случае.
Операцией возведения в степень пользоваться нельзя!
Решение
Листинг программы
- public class Solution {
- public static int recursion(double n) {
- // Базовый случай
- if (n == 1) {
- return 1;
- } // Базовый случай
- else if (n > 1 && n < 2) {
- return 0;
- } // Шаг рекурсии / рекурсивное условие
- else {
- return recursion(n / 2);
- }
- }
- public static void main(String[] args) {
- double n = 64;
- // вызов рекурсивной функции
- if (recursion(n) == 1) {
- System.out.println("Yes");
- } else {
- System.out.println("No");
- }
Решение задачи: «Проверить, является ли число N точной степенью двойки (Java -> Си)»
textual
Листинг программы
- #include<stdio.h>
- int recursion(int n);
- int main(void)
- {
- int n;
- scanf("%d",&n);
- if(recursion(n))
- printf("YES\n");
- else
- printf("NO\n");
- return 0;
- }
- int recursion(int n)
- {
- if(n==2)
- return 1;
- if(n%2)
- return 0;
- else
- return recursion(n/2);
- }
Объяснение кода листинга программы
- В начале кода подключается стандартная библиотека ввода-вывода
. - Определяется функция recursion(int n), которая будет использоваться для проверки числа на точность.
- В функции main() создается переменная типа int с именем n, в которую считывается число с помощью функции scanf().
- После считывания числа, вызывается функция recursion(n) и результат проверки сохраняется в переменную типа int с именем result.
- Затем выводится сообщение
YES
илиNO
в зависимости от значения переменной result. - Функция main() возвращает 0, что означает успешный конец работы программы.
- В функции recursion(int n) выполняется проверка: если n равно 2, то функция возвращает 1.
- Если n не равно 2, то выполняется проверка: если n не делится на 2 без остатка, то функция возвращает 0.
- Если n делится на 2 без остатка, то функция вызывает саму себя, передавая в качестве аргумента значение n/2.
- Возвращаемое значение функции recursion(int n) используется для проверки числа на точность в функции main().
- Если функция recursion(int n) вернула 1, то выводится сообщение
YES
. - Если функция recursion(int n) вернула 0, то выводится сообщение
NO
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д