Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 13
1

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

20.12.2012, 23:35. Показов 5548. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Даны натуральные числа n и m; Найти НОД(n,m). составить рекурсивную функцию вычисления НОД, основанную на соотношении НОД(n, m)=НОД(m, r), где r- остаток от деления n на m(n>m)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2012, 23:35
Ответы с готовыми решениями:

Заданы натуральные числа m и n. Найти НОД(m,n) Составить программу которая будет содержать рекурсивную функцию вычисления НОД......
Заданы натуральные числа m и n. Найти НОД(m,n) Составить программу которая будет содержать...

Написать рекурсивную функцию вычисления НОД
подскажите, пожалуйста, как написать рекурсивную функцию вычисления НОД, используя алгоритм...

Найти НОД используя рекурсивную функцию вычисления
Даны натуральные числа n, m; найти НОД(m, n). Написать программу, использующую рекурсивную функцию...

9.Составить рекурсивную функцию вычисления
11. Составить рекурсивную функцию вычисления Для получения функции в явном виде рассмотрим ее...

11
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
20.12.2012, 23:38 2
пробовали найти на форуме ? думаете вы первый кому нужен НОД? тем более рекурсией
0
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 13
20.12.2012, 23:50  [ТС] 3
Цитата Сообщение от Nixy Посмотреть сообщение
пробовали найти на форуме ? думаете вы первый кому нужен НОД? тем более рекурсией
на форуме туфта, которая не компилируется, а сам я мало в этом понимаю, хотя очень хотелось бы понять
а может и не туфта, в любом случае понять хочется, а никто не объяснит, все умные, но занятые, "всё есть на форуме"....коль было бы разъяснено, я б уже давно настрочил что надо сам
0
8 / 8 / 4
Регистрация: 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 секунд
строго по тому что вы написали в задании
0
27 / 6 / 1
Регистрация: 20.12.2012
Сообщений: 39
21.12.2012, 00:10 5
вобще то НОД определен для n и m не нулевых
0
8 / 8 / 4
Регистрация: 20.06.2012
Сообщений: 225
21.12.2012, 00:19 6
Цитата Сообщение от radamaerl Посмотреть сообщение
вобще то НОД определен для n и m не нулевых
если вы о
C++
1
2
 if(m==0)
        return n;
то это условие выхода из рекурсии
0
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);
}
ну не упростить
уменьшить длину кода
0
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 13
21.12.2012, 01:12  [ТС] 8
вопрос такой, что такое вообще - этот НОД?
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
21.12.2012, 01:15 9
Цитата Сообщение от Mark33 Посмотреть сообщение
вопрос такой, что такое вообще - этот НОД?
Наибольший Общий Делитель
0
27 / 6 / 1
Регистрация: 20.12.2012
Сообщений: 39
21.12.2012, 01:21 10
Mark33, ты чисто по приколу для себя разбираешься или сдать гдето надо?
0
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 13
21.12.2012, 12:39  [ТС] 11
Цитата Сообщение от radamaerl Посмотреть сообщение
Mark33, ты чисто по приколу для себя разбираешься или сдать гдето надо?
Чисто по приколу ДА, немного
первокур я, разобраться просто надо и хочется
да в вообще, задачку эту сдать бы
0
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)
0
21.12.2012, 13:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2012, 13:08
Помогаю со студенческими работами здесь

Составить рекурсивную функцию вычисления среднего арифметического элементов массива
Составить рекурсивную функцию, которая вычисляет среднее арифметическое элементов одномерного...

Написать рекурсивную функцию НОД
Здравствуйте, добрые люди! С наступающим Вас!!! Помогите плиз с решением на С, я не понимаю даже...

Написать рекурсивную функцию вычисления
Помогите пожалуйста!

Написать рекурсивную функцию вычисления сочетания n то k
Вот проблемка Написать рекурсивную функцию вычисления сочетания n то k.


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru