Форум программистов, компьютерный форум CyberForum.ru

Выведите YES, если число N является точной степенью двойки, или NO в противном случае.(Рекурсия) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.81
DRIVER733
0 / 0 / 0
Регистрация: 27.03.2012
Сообщений: 12
10.07.2012, 00:44     Выведите YES, если число N является точной степенью двойки, или NO в противном случае.(Рекурсия) #1
Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или слово NO в противном случае.(Рекурсия)

Операцией возведения в степень пользоваться нельзя!


ввод - 8 вывод - YES

ввод - 3 вывод - NO
Правильно ли мое решение? Есть ли другие решения?

Заранее спасибо.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
using namespace std;
 
 
void f(int n)
{
    if (n==2)
        cout<<"YES";
    
    if (n<2)
        cout<<"NO";
        
    if (n>2)
        f(n/2);
}
        
 
int main()
{
    f(8);
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2012, 00:44     Выведите YES, если число N является точной степенью двойки, или NO в противном случае.(Рекурсия)
Посмотрите здесь:

C++ Выведите все числа от A до B включительно, в порядке возрастания, если A < B, или в порядке убывания в противном случае.
C++ Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае не изменять его. Вывести полученное число
Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае C++
Дано натуральное число n. Определите, является ли оно степенью числа 2, и если является, то выведите значение этой степени C++
C++ Определите, является ли число степенью числа 2, и если является, то выведите значение этой степени
C++ Является ли число степенью двойки
Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае не изменять его C++
C++ Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае вычесть из него

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
10.07.2012, 01:04     Выведите YES, если число N является точной степенью двойки, или NO в противном случае.(Рекурсия) #2
C++
1
2
3
4
5
6
7
8
#include <iostream>
 
int main()
{
    int n = 8;
    std::cout << ( ( n & ( n - 1 ) ) ? "NO" : "YES" ) << std::endl;
    return 0;
}
DRIVER733
0 / 0 / 0
Регистрация: 27.03.2012
Сообщений: 12
10.07.2012, 21:15  [ТС]     Выведите YES, если число N является точной степенью двойки, или NO в противном случае.(Рекурсия) #3
Mиxaил, Спасибо за ответ. Не могли бы вы мне, как новичку, объяснить что происходит в вашем коде. Мне еще не приходилось встречаться с операторами "&" и "?", что они означают?
p.s. гуглил, но не понял значения этих операторов.
Yandex
Объявления
10.07.2012, 21:15     Выведите YES, если число N является точной степенью двойки, или NO в противном случае.(Рекурсия)
Ответ Создать тему
Опции темы

Текущее время: 21:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru