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

Рекурсия, факториал - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Рисование в C++ Windows Forms http://www.cyberforum.ru/cpp-beginners/thread646237.html
Всем здравствуйте такое задание нужно нарисовать с помощью треуголиников, квадратов, прямоугольников и кругов что то на подобие животного цветного с глазами ну в общем все как положено))) (Кошка...
C++ unresolved external symbol в glm.h сидят структуры вида struct Vector2D; struct Vector3D; struct Vector4D; struct Matrix2D; struct Matrix3D; struct Matrix4D; ... http://www.cyberforum.ru/cpp-beginners/thread646204.html
C++ Напечатать все пары дружественных чисел
Помогите пожалуйста решить рационально задачу: Два натуральных числа называются дружественными, если каждое из них равно сумме всех делителей другого, за исключением самого себя (таковы, например,...
Cannot convert 'const wchar_t *' to 'const char *' C++
HMODULE hMod=GetModuleHandle(NULL); if(!hMod) { } HRSRC hRes=FindResource(hMod,"acc.dll",RT_RCDATA); if(!hRes){ } HGLOBAL hGlob=LoadResource(hMod,hRes); if(!hGlob) { } BYTE...
C++ Настройка Geany на Windows (не пашет) http://www.cyberforum.ru/cpp-beginners/thread646157.html
Помогите!!! Может кто встречался с такой проблемой. В общем только Geany установил, воткнул туда код с книжки (перед этим поменял кодировку на Русская и тип файла C++ #include <iostream.h> int...
C++ Недопонимание указателей Уже прошёл их по книжке давно, но они частенько встречаются, и я никак не могу понять некоторые процессы с ними. Допустим есть в классе какие-то данные типа int lim, char name Методы принимают... подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
05.09.2012, 21:41
Цитата Сообщение от IGPIGP Посмотреть сообщение
А n! - удобный пример для объяснения и понимания.
Лично я считаю это ужасным примером. Хуже может быть только
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
bool isOdd(unsigned);
 
bool isEven(unsigned x)
{
  if (x == 0) {
    return true;
  }
  else {
    return !isOdd(x - 1);
  }
}
 
bool isOdd(unsigned x)
{
  if (x == 1) {
    return true;
  }
  else {
    return !isEven(x - 1);
  }
}
Просто потому, что что-то можно выразить рекурсией, ещё не стоит так действительно делать. В императивных языках вроде Плюсов есть родные циклы, в которых факториал определяется не хуже как произведение чисел от единицы до n.

Ещё можно понять чисто функциональные языки, где циклы выражаются через хвостовую рекурсию, и использование факториала для объяснения хвостовой и не хвостовой рекурсии и т. п. Но не императивный Си.

Лучше бы показывали рекурсию на естественно рекурсивных вещах: qsort, ханойских башнях, поиске в дереве/графе.
3
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.