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

Составить рекурсивную функцию вычисления НОД - C++

Восстановить пароль Регистрация
 
Mark33
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 13
20.12.2012, 23:35     Составить рекурсивную функцию вычисления НОД #1
Даны натуральные числа n и m; Найти НОД(n,m). составить рекурсивную функцию вычисления НОД, основанную на соотношении НОД(n, m)=НОД(m, r), где r- остаток от деления n на m(n>m)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2012, 23:35     Составить рекурсивную функцию вычисления НОД
Посмотрите здесь:

Написать рекурсивную функцию вычисления сочетания n то k C++
C++ Заданы натуральные числа m и n. Найти НОД(m,n) Составить программу которая будет содержать рекурсивную функцию вычисления НОД......
C++ Написать рекурсивную функцию вычисления НОД
C++ Написать рекурсивную функцию вычисления корня уравнения f(x)=0
Написать рекурсивную функцию вычисления полинома: C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
20.12.2012, 23:38     Составить рекурсивную функцию вычисления НОД #2
пробовали найти на форуме ? думаете вы первый кому нужен НОД? тем более рекурсией
Mark33
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 13
20.12.2012, 23:50  [ТС]     Составить рекурсивную функцию вычисления НОД #3
Цитата Сообщение от Nixy Посмотреть сообщение
пробовали найти на форуме ? думаете вы первый кому нужен НОД? тем более рекурсией
на форуме туфта, которая не компилируется, а сам я мало в этом понимаю, хотя очень хотелось бы понять
а может и не туфта, в любом случае понять хочется, а никто не объяснит, все умные, но занятые, "всё есть на форуме"....коль было бы разъяснено, я б уже давно настрочил что надо сам
komand0
 Аватар для komand0
8 / 8 / 0
Регистрация: 20.06.2012
Сообщений: 225
20.12.2012, 23:58     Составить рекурсивную функцию вычисления НОД #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
int nod(int n, int m)
{
    if(m==0)
        return n;
    if(n>m)
        return nod(m,n%m);
    else
        return nod(n,m%n);
}
 
int main ()
{
    std::cout << nod(12,8);
    system("PAUSE");
    return 0;
}
Добавлено через 45 секунд
строго по тому что вы написали в задании
radamaerl
27 / 6 / 1
Регистрация: 20.12.2012
Сообщений: 39
21.12.2012, 00:10     Составить рекурсивную функцию вычисления НОД #5
вобще то НОД определен для n и m не нулевых
komand0
 Аватар для komand0
8 / 8 / 0
Регистрация: 20.06.2012
Сообщений: 225
21.12.2012, 00:19     Составить рекурсивную функцию вычисления НОД #6
Цитата Сообщение от radamaerl Посмотреть сообщение
вобще то НОД определен для n и m не нулевых
если вы о
C++
1
2
 if(m==0)
        return n;
то это условие выхода из рекурсии
radamaerl
27 / 6 / 1
Регистрация: 20.12.2012
Сообщений: 39
21.12.2012, 00:58     Составить рекурсивную функцию вычисления НОД #7
в этом случае НОД(12,0)=12
Эвклид в шоке
ну это к слову, просто чтобы человек понимал где препод может придраться и смог объяснить
тогда можно упростить
C++
1
2
3
4
5
6
int nod(int n, int m)
{
    if (m==0)
        return n;
    return nod(m,n%m);
}
ну не упростить
уменьшить длину кода
Mark33
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 13
21.12.2012, 01:12  [ТС]     Составить рекурсивную функцию вычисления НОД #8
вопрос такой, что такое вообще - этот НОД?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
21.12.2012, 01:15     Составить рекурсивную функцию вычисления НОД #9
Цитата Сообщение от Mark33 Посмотреть сообщение
вопрос такой, что такое вообще - этот НОД?
Наибольший Общий Делитель
radamaerl
27 / 6 / 1
Регистрация: 20.12.2012
Сообщений: 39
21.12.2012, 01:21     Составить рекурсивную функцию вычисления НОД #10
Mark33, ты чисто по приколу для себя разбираешься или сдать гдето надо?
Mark33
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 13
21.12.2012, 12:39  [ТС]     Составить рекурсивную функцию вычисления НОД #11
Цитата Сообщение от radamaerl Посмотреть сообщение
Mark33, ты чисто по приколу для себя разбираешься или сдать гдето надо?
Чисто по приколу ДА, немного
первокур я, разобраться просто надо и хочется
да в вообще, задачку эту сдать бы
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2012, 13:08     Составить рекурсивную функцию вычисления НОД
Еще ссылки по теме:

Написать рекурсивную функцию вычисления C++
C++ 9.Составить рекурсивную функцию вычисления
Написать рекурсивную функцию НОД C++

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

Или воспользуйтесь поиском по форуму:
radamaerl
27 / 6 / 1
Регистрация: 20.12.2012
Сообщений: 39
21.12.2012, 13:08     Составить рекурсивную функцию вычисления НОД #12
ну тогда бери любой предложенный вариант и чтобы понять то рекурсивная функция должна иметь выход то есть гдето принимать конечное числовое значение
в данном случае ноль
но ноль это плохо для определения НОД (я писал выше)
лучше тогда так
C++
1
2
3
4
5
6
int nod(int n, int m)
{
    if (n%m==0)
        return m;
    return nod(m,n%m);
}
здесь получается как
если m сразу делитель n то понятно что m наибольший общий делитель (НОД)
иначе включаем рекурсию
если в функцию передается ноль то программа выполняется с ошибкой (изза определения НОД)

Добавлено через 12 минут
короче если вводить по твоему условию (n>m) и n,m не равны 0 то есть грамотно то работает все
в последнем случае просто условий меньше в самой функции и m не может быть равен 0
и четко по по твоему условию поиска НОД
НОД(n, m)=НОД(m, r), где r- остаток от деления n на m(n>m)
Yandex
Объявления
21.12.2012, 13:08     Составить рекурсивную функцию вычисления НОД
Ответ Создать тему
Опции темы

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