Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 52

Что делает эта функция?

28.01.2018, 21:07. Показов 1350. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! У меня есть следующая функция, однако не совсем понимаю, что она делает. Кто-то может помочь?
C++
1
2
3
4
5
//n - любое натуральное число
int f(int n){
    if (n < 2) return n;
    return abs(n % 2 - f(n/2));
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.01.2018, 21:07
Ответы с готовыми решениями:

Что делает эта функция?
Что делает эта функция? int vich_cods(const void *a, const void *b){ // return *(char*)a - *(char*)b; }

что делает эта функция?
она создаёт массив списков? void create_massiv_of_lists(node** x,int l) { int i,n; for (i=0;i&lt;l;i++) { ...

Что делает эта функция?
func(x) { if (x == 0) { return 0 } return func(x / 10) + x % 10 }

8
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
28.01.2018, 21:14
Лучший ответ Сообщение было отмечено BigBoss97 как решение

Решение

Похоже, возвращает 1 если двоичных единиц в числе нечётное количество и 0 в противном случае.
2
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.01.2018, 21:39

Не по теме:

alex white, а ты математик? Я вот глядел на это, рисовал на бумаге, распечатал значения и всё равно не мог понять логики



Добавлено через 2 минуты

Не по теме:

BigBoss97, если не секрет, откуда такую задачу взял?

0
0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 52
28.01.2018, 21:45  [ТС]
Evg, не секрет) Из экзамена по информатике за первый семестр.
0
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
28.01.2018, 21:50
Цитата Сообщение от Evg Посмотреть сообщение
а ты математик? Я вот глядел на это, рисовал на бумаге, распечатал значения и всё равно не мог понять логики
Ну, не сказал бы, но стараюсь над этим работать.
Тут я пришел к выводу, что значения функции ограничены между [0,1] и зависят от n%2, то есть от отдельных битов числа. В силу того, что число из 1 бита вернет этот бит, а последовательность вычитаний abs(n % 2 - f(n/2)) чередуется если два слагаемых единицы - мне этого хватило, чтобы выдвинуть гипотезу и проверить её циклом
C++
1
2
3
4
5
while(true)
    {
        cin >> n;
        cout << f(n) << endl;
    }
Добавлено через 2 минуты
Нешифрованно она как-то так выглядит:
C++
1
2
3
4
int f(int n){
    if (n < 2) return n;
    return n % 2 ^ f(n/2);
}
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
29.01.2018, 09:46
Цитата Сообщение от alex white Посмотреть сообщение
что значения функции ограничены между [0,1]
Ё-маё... я тупой

Добавлено через 1 минуту
Цитата Сообщение от alex white Посмотреть сообщение
Похоже, возвращает 1 если двоичных единиц в числе нечётное количество и 0 в противном случае
Кстати, это xor всех битов
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
29.01.2018, 13:43
Цитата Сообщение от alex white Посмотреть сообщение
возвращает 1 если двоичных единиц в числе нечётное количество и 0 в противном случае
А где такое на практике нужно? Можете привести хоть один пример? (Для общего развития)
0
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
29.01.2018, 13:49
Avaddon74, без понятия, но это простой паттерн с равномерным распределением, так что возможно можно притянуть применения в генерации псевдорандома, хешей, шифровании...
Конкретно здесь это просто задача для студентов, не более, на знание систем счисления.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
29.01.2018, 19:56
Цитата Сообщение от Avaddon74 Посмотреть сообщение
А где такое на практике нужно?
Именно такая реализация - нигде. Это задача для того, чтобы как следует подумать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.01.2018, 19:56
Помогаю со студенческими работами здесь

Что делает эта рекурсивная функция?
Добрый день. Можете подсказать, что делает эта функция? Явно связана с двоичной системой, но не могу понять, что именно. int f(int n){...

Что делает эта программа
Не понимаю что делает программа,начиная с getline #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;algorithm&gt; #include...

Что делает эта строка?
for(int ij= 0; ij&lt; m; ij++)

что делает эта программа?
здравствуйте! подскажите пожалуйста что делает данная программа...я так думаю он должен выводить 1,2 3,4 ? #include...

Что делает эта программка?
#define NN 15 main() {float x1; int kk=0, i; ... /* ввод x1*/ for(i=NN-1; i&gt;0; i--) {if(x1 == 0) kk++; ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru