Проверить, является ли число 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);
}

Объяснение кода листинга программы

  1. В начале кода подключается стандартная библиотека ввода-вывода .
  2. Определяется функция recursion(int n), которая будет использоваться для проверки числа на точность.
  3. В функции main() создается переменная типа int с именем n, в которую считывается число с помощью функции scanf().
  4. После считывания числа, вызывается функция recursion(n) и результат проверки сохраняется в переменную типа int с именем result.
  5. Затем выводится сообщение YES или NO в зависимости от значения переменной result.
  6. Функция main() возвращает 0, что означает успешный конец работы программы.
  7. В функции recursion(int n) выполняется проверка: если n равно 2, то функция возвращает 1.
  8. Если n не равно 2, то выполняется проверка: если n не делится на 2 без остатка, то функция возвращает 0.
  9. Если n делится на 2 без остатка, то функция вызывает саму себя, передавая в качестве аргумента значение n/2.
  10. Возвращаемое значение функции recursion(int n) используется для проверки числа на точность в функции main().
  11. Если функция recursion(int n) вернула 1, то выводится сообщение YES.
  12. Если функция recursion(int n) вернула 0, то выводится сообщение NO.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы