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

Что вернет функция?

21.12.2012, 01:03. Показов 1608. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача была на НОД. Есть разные способы его нахождения, но вот столкнулся с данным кодом и не понимаю как он работает. Насколько я знаю, функция возвращает один аргумент. Что вернет функция в данном случае? Вот кусочек кода. Не понимаю суть реторна. Спасибо.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
else if(x % 2 == 0 && y % 2 == 0)
 
      return 2 * nod(x / 2, y / 2);
 
   else if(x % 2 == 0 && y % 2 != 0)
 
      return nod(x / 2, y);
 
   else if(x % 2 != 0 && y % 2 == 0)
 
      return nod(x, y / 2);
 
   else if(x % 2 != 0 && y % 2 != 0)
 
      return nod(y, abs(y - x));
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.12.2012, 01:03
Ответы с готовыми решениями:

Что вернет функция
Что вернет функция, проверяющая баланс скобок, если она принимает как параметр такую строку: ((х+y/z+у+(z/(y+z))-((0*z)-3) ...

Что вернет функция
Здравствуйте! Я вот С не знаю вообще, подскажите пожалуйста выполнится ли while при таком условии if (array_size == 0) return (0);...

Что вернёт функция g(), если её вызвать в C++?
Что вернёт функция g(), если её вызвать в C++? int h(int *q, int *p) { *p += 1; *q += 1; return *p + *q; } ...

10
 Аватар для I.M.
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
21.12.2012, 03:21
здесь происходит рекурсивный вызов
0
ComfyMobile
 Аватар для Nixy
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
21.12.2012, 07:19
Цитата Сообщение от Max1111 Посмотреть сообщение
Задача была на НОД. Есть разные способы его нахождения, но вот столкнулся с данным кодом и не понимаю как он работает. Насколько я знаю, функция возвращает один аргумент. Что вернет функция в данном случае? Вот кусочек кода. Не понимаю суть реторна. Спасибо.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
else if(x % 2 == 0 && y % 2 == 0)
 
      return 2 * nod(x / 2, y / 2);
 
   else if(x % 2 == 0 && y % 2 != 0)
 
      return nod(x / 2, y);
 
   else if(x % 2 != 0 && y % 2 == 0)
 
      return nod(x, y / 2);
 
   else if(x % 2 != 0 && y % 2 != 0)
 
      return nod(y, abs(y - x));
по данному куску кода не понятно что оно вернет, так как не хватает условия выхода, есть подозрение ,что оно идет первым,а у вас начинается код с исключением

Добавлено через 5 минут
но можно сказать точно что это будет НОД
0
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 4
21.12.2012, 23:49  [ТС]
Благодарю за комментарии.
Мне наверное стоило сразу весь код выложить.

Вот весь код. К примеру Х=3, Y=4. попадаем в этот кусок кода: else if(x % 2 != 0 && y % 2 == 0)
return nod(x, y / 2); Каким образом оно мне вернет единицу? Не понимаю.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <math.h>
 
int nod(int, int);
 
using namespace std;
 
int main()
{
   int int1, int2;
   
   cout << "//Finding of the greatest general divider" << endl << endl;
   cout << "Enter two whole numbers: " << endl;
   cin >> int1 >> int2;
   cout << "NOD: " << nod(int1, int2) << endl;
   
   return 0;
}
 
int nod(int x, int y)
{
   if(x == 0)
      return y;
   else if(y == 0)
      return x;
   else if(x == y)
      return x;
   else if(x == 1 || y == 1)
      return 1;
   else if(x % 2 == 0 && y % 2 == 0)
      return 2 * nod(x / 2, y / 2);
   else if(x % 2 == 0 && y % 2 != 0)
      return nod(x / 2, y);
   else if(x % 2 != 0 && y % 2 == 0)
      return nod(x, y / 2);
   else if(x % 2 != 0 && y % 2 != 0)
      return nod(y, abs(y - x));
}
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
22.12.2012, 00:30
Nod (3, 4) ----> Nod (3, 2) --> Nod (3, 1) ---> return 1;
0
Мой лучший друг-отладчик!
 Аватар для ZaMaZaN4iK
167 / 167 / 30
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
22.12.2012, 00:30
первый раз в жизни сталкиваюсь с таким длинным кодом для НОДа.Он же на 2 строчки...
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
22.12.2012, 00:31
ZaMaZaN4iK, это, вроде бы, бинарный поиск нода.

Добавлено через 22 секунды
должен работать за логарифм
0
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 4
22.12.2012, 23:37  [ТС]
Цитата Сообщение от Dani Посмотреть сообщение
Nod (3, 4) ----> Nod (3, 2) --> Nod (3, 1) ---> return 1;
А откуда программа знает, где ей остановится? Где остановится скажем на единице, а где на тройке? С рекурсиями я еще не мел дело. Только поверхосно. Как я понимаю это что-то вроде циклов. Только вот условия выхода, я тут не вижу. И как программа будет вести себя вот к примеру в таком случае "
C++
1
return 2 * nod(x / 2, y / 2);
"? Будет вызывать НОД Х или Y?

И если не тяжело скажите, когда идет вызов рекурсии, код повторяется весь что находиться в ней (рекурсии), или же определенный кусок кода, который непосредственно нужен нам?

Спасибо.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
22.12.2012, 23:40
Цитата Сообщение от Max1111 Посмотреть сообщение
А откуда программа знает, где ей остановится?
отсюда
C++
1
2
3
4
5
6
7
8
9
10
int nod(int x, int y)
{
   if(x == 0)
      return y;
   else if(y == 0)
      return x;
   else if(x == y)
      return x;
   else if(x == 1 || y == 1)
      return 1;
1
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
22.12.2012, 23:45
Цитата Сообщение от Max1111 Посмотреть сообщение
где ей остановится?
она будет останавливаться (в этом случае) на условии
C++
1
2
else if(x == 1 || y == 1)
      return 1;
1
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 4
22.12.2012, 23:49  [ТС]
Цитата Сообщение от MrGluck Посмотреть сообщение
отсюда

Цитата Сообщение от Dani Посмотреть сообщение
она будет останавливаться (в этом случае) на условии
C++
1
2
else if(x == 1 || y == 1)
      return 1;

Блин, как все просто оказывается. Огромное Вам спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.12.2012, 23:49
Помогаю со студенческими работами здесь

Что вернет стековая функция разбора пар скобок?
Что вернет функция, проверяющая баланс скобок, если она принимает как параметр такую строку: ((х-((1/х)+у-4)*(z/4+(2-x*3)) Рассмотреть...

Что вернет стековая функция разбора пар скобок?
Что вернет функция, если она принимает как параметр такую строку: (5*(x/(y*5))*z)+((1/7)*z*2)-x С точки зрения логики стека.

Какое значение вернет функция system, если задана неверная команда
Подскажите какое значение вернет функция system, если задана неверная команда, например открытие несуществующего или защищенного каталога?

Функция, которая вернет номера двух из трех заданных точек на плоскости, расстояние между которыми минимально
Написать функцию Otr(x1,y1,x2,y2,х3,у3) вещественного типа, которая вернет номера двух из трех заданных точек на плоскости, расстояние...

CLisp Что вернет функция?
Дана функция (defun test (a b &amp;optional (c 1 c-p) (d 2 d-p)) (+ a (if c-p d b) c d)) Что вернет функция при вызове ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД 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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru