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

Вычисление НОД рекурсией! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание односвязного списка из строки, полученной в файле http://www.cyberforum.ru/cpp-beginners/thread512090.html
Здравствуйте, имеется файл, который содержит некий текст. Необходимо подсчитать количество вхождений каждого слова в этот текст и результат поместить в односвязный список. Вот мой код #include...
C++ Управление предприятием Помогите пожалуйста с лабораторной: Предприятие содержит несколько подразделений, которые разбиты на отдельные сектора. Среди работников этих подразделений могут быть рабочие и служащие,... http://www.cyberforum.ru/cpp-beginners/thread512088.html
Списки и деревья C++
Помогите, плиз... чет у меня не получается с ней ничего((( Написать программу, которая вводит с клавиатуры список целых чисел, ищет максимальный элемент списка, затем вводит с клавиатуры...
Все возможные a и b по формуле с вложенными циклами C++
Само задание: Любое натуральное число N (N>7) можно получить по формуле n = 3a + 5b, где a и b - натуральные числа. Исходя из полученного N найти все a и b. К сожалению я не могу понять самой...
C++ Полиморфизм c++ http://www.cyberforum.ru/cpp-beginners/thread512075.html
Построить массив из указателей (базового типа) на объекты обоих классов. Выбрать объекты производного класса, отсортировать их и сложить как числа. Выбрать объекты базового класса, отсортировать их...
C++ Реализовать команду Сd-смена поточного каталога в Borland C++ Задача: Реализовать команду СD-смена поточного каталога в Borland C++ (как в коммандной строке) подробнее

Показать сообщение отдельно
starikNAD
11 / 11 / 3
Регистрация: 01.12.2010
Сообщений: 83
04.03.2012, 18:30
Функция может вызвать сама себя. Такой способ вычислений называется рекурсией.
Привожу пример работающей функции вычисления НОД:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/* прототипы функций */
/* нахождение наибольшего общего делителя
   двух целых чисел
   используются свойства НОД:
   nod(n1,n2)=nod(n2,n1)
   nod(0, n2)=n2
   nod(n1,n2)=nod(n2,n3) где n3=n1%n2
*/
int nod(int n1, int n2);
...
/* вычисление НОД: рекурсия */
int nod(int n1, int n2)
{
  if(n1==0) return n2;
  return nod(n2%n1,n1);
}
при вызове функции (например, nod(8, 12) ) функция натыкается на return nod(4,8) - потому что 12%8=4. Тогда она запускает новый вызов функции nod. Далее она наткнется на вызов nod(4%8,8) и так далее - пока не обнаружится n1==0.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru