![]() |
|
Модераторы: bsa |
![]()
|
|
| Zorak |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 720 Регистрация: 13.11.2007 Репутация: нет Всего: 3 |
Вот написал код для нахождения НСД двух целих чисел)
[code=#C] #include "stdio.h"; int NSD(int a, int b) { int i,min; int buf = 0; if (a < b) { min = a; } else { min = b ; } for(i = 1; i<=min; i++) { if ((a % i == 0) && (b % i == 0)) { buf = i; } } return buf; } void main() { int a,b,value = 0; printf("A= "); scanf("%d",&a); printf("B= "); scanf("%d",&b); value = NSD(a,b); printf("Zna4: %d\n",value); } [/code] Как мне из етой функции сделать рекурсивную функцию ??? -------------------- Знание - сила. А сила есть, ума не надо... Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло. |
|||
|
||||
| Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: нет Всего: 8 |
А зачем делать из нее рекурсивную функцию?
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
вроде так:
только у данного исполнения есть недостсток : если не найдет подходящее значениее, то рекурсия зациклется, как вариант можно раскомментировать строку проверки условия значения (больше чем одно из исходных данных). P.S. пользуйтесь, пожалуйста, кнопкой код, для оформления поста. Это сообщение отредактировал(а) mes - 3.11.2008, 20:51 |
|||
|
||||
| Zorak |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 720 Регистрация: 13.11.2007 Репутация: нет Всего: 3 |
Ок, буду пользоваться) спасибо =) Добавлено через 28 секунд
Задача такая стоит ) -------------------- Знание - сила. А сила есть, ума не надо... Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло. |
||||||
|
|||||||
| Zorak |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 720 Регистрация: 13.11.2007 Репутация: нет Всего: 3 |
баг етого кода состоит в том, что как результат передаеться число 1 вданном случае.. тоесть то число, которое передаеться у функцию NSD_impl(1, a, b); при условии, что оба числа на него деляться... как по мне ето через return i, ибо условие исполняеться, возвращаеться наше i и виходит на результат( -------------------- Знание - сила. А сила есть, ума не надо... Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
дествительно ( а как он должен себя вести то ? NSD -это наибольший общий делитель ? шас подумаю Это сообщение отредактировал(а) mes - 3.11.2008, 21:14 |
|||
|
||||
| Zorak |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 720 Регистрация: 13.11.2007 Репутация: нет Всего: 3 |
я переписал вот так
но материться по поводу Break, мло типа иилегал( : error C2043: illegal break ...что ето значит и как ето виправить ?)) Добавлено через 40 секунд
мм ето найбільший спільний дільник =) не знаю как по русски будит) -------------------- Знание - сила. А сила есть, ума не надо... Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло. |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
проверяйте :
Это сообщение отредактировал(а) mes - 3.11.2008, 21:25 |
|||
|
||||
| Zorak |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 720 Регистрация: 13.11.2007 Репутация: нет Всего: 3 |
материться по поводу std::min, не видит то ли класа, толи самого метода.. хз: std' : is not a class or namespace name В принципе если логически подумать, то ето тоже не должно нормально работать, так как береться минимальний елемнт и двигаеться к одинице... и в результате опять будит 1) Это сообщение отредактировал(а) Zorak - 3.11.2008, 21:27 -------------------- Знание - сила. А сила есть, ума не надо... Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
если пишете для C++, то добавьте #include <iostream> если под Си то (не знаю есть ли готовая) легче подставить свою реализацию Добавлено через 3 минуты и 43 секунды неа, не так. берется в рекурсии декремент (вторая строчка функции NSD_impl) от минимального из двух исходных чисел, но как только встретиться число удовлетворяющее требованию(первая строчка функции NSD_impl), то рекурсия закончится(начнет разворачиваться). |
|||
|
||||
| Zorak |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 720 Регистрация: 13.11.2007 Репутация: нет Всего: 3 |
Диствительно.. моя ошибка в мислях =)... всё работает... вставил только "свою реализацию" алгоритма нахождения минимального числа)... в целом программа виглядит вот так: (может кому понадобиться)
З.Ы. Спасибо большое =) Это сообщение отредактировал(а) Zorak - 3.11.2008, 21:49 -------------------- Знание - сила. А сила есть, ума не надо... Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло. |
||||
|
|||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
Добавлено @ 22:04 перебор не самый эффективный метод Это сообщение отредактировал(а) J0ker - 3.11.2008, 22:08 |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
можно написать так :
еше нужно бы решить вопрос с нулем и отрицательными числами на входе.. Добавлено через 5 минут и 56 секунд хороший алгоритмочек |
||||
|
|||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
алгоритм Эвклида если кому интересно
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |