Проверить, является ли число 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д