0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 52

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

28.01.2018, 21:07. Показов 1372. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru