Помогите найти ошибку в программе на С++ - Компьютерные вопросы
  • Чаты 4chT.com в телеграмм
    Наши группы в телеграмм

Вопрос Помогите найти ошибку в программе на С++

Регистрация
17 Июн 2013
Сообщения
81
Репутация
0
Спасибо
0
Монет
0
Помогите найти ошибку в программе. Как бы ясно, что НОД должен быть равен 5, а не 10, но не могу найти в чём ошибка

#include "stdafx.h"
#include
#include
#include
#include
#include
using namespace std;

int NOD(int m, int n)
{
setlocale (LC_ALL,"RUS");
int r;
r=(m%n);
if (r==0)
return n;
else
{NOD(m,r);
return r;}
}
int main()
{
int n=0;
n=NOD(35,25);
printf("Наибольший общий делитель (НОД): %i ",n);
printf(" ");
system("pause");
return 0;
}
 
Регистрация
27 Окт 2013
Сообщения
77
Репутация
0
Спасибо
0
Монет
0
может вместо {NOD(m,r); return r;} должно быть return NOD(m,r); ? PS: классический алгоритм long gcd(long a, long b) { if (a == b) return a; if (a > b) { long tmp = a; a = b; b = tmp; } return gcd04(a, b - a); }
 
Регистрация
22 Сен 2013
Сообщения
103
Репутация
0
Спасибо
0
Монет
0
смотри в нод передаешь 2 переменные и нигде их не меняешь по ходу этой процедуры. Т. Е. строки {NOD(m,r); return r;} полюбому вернут первый переданный "р" Попробуй что-нить в духе {r = NOD(m,r); return r;} Или {return NOD(m,r);}
 
Сверху Снизу