. Посмотрите, как это работает. Функция, вызывающая сама себя, называется рекурсивной (recursive). Альтернативная реализация, описанная в разделе 15.5, называется итеративной (iterative), потому что в ней используется итерация по значениями (в цикле
while
). Убедитесь, что рекурсивная функция
fac
работает и выдает те же результаты, что и итеративная функция
fac
при вычислении факториала чисел 0, 1, 2, 3, 4 и так далее до 20. Какую реализацию функции
fac
вы предпочитаете и почему?
2. Определите класс
Fct
, который почти совпадает с классом
Function
, за исключением того, что он хранит аргументы конструктора. Включите в класс
Fct
операции “восстановления” параметров, чтобы мы могли повторять вычисления с разными диапазонами, функциями и т.д.
3. Модифицируйте класс
Fct
из предыдущего упражнения так, чтобы в нем был дополнительный аргумент, позволяющий контролировать точность. Сделайте тип этого аргумента шаблонным параметром, чтобы повысить гибкость класса.
4. Постройте график функций
sin
,
cos
,
sin(x)+cos(x)
и
sin(x)*sin(x)+cos(x)*cos(x)
на одном рисунке. Нарисуйте оси и метки.
5. “Анимируйте” (как в разделе 15.5) ряд
1–1/3+1/5–1/7+1/9–1/11+
... Он называется рядом Лейбница (Leibniz) и сходится к числу ?
?/4
.
6. Разработайте и реализуйте класс для построения гистограммы. Его исходные данные должны храниться в векторе типа
vector<double>
, в котором записаны N значений и каждое значение представляется “столбиком”, т.е. прямоугольником с соответствующей высотой.
7. Разработайте класс для построения гистограмм, позволяющий расставлять метки на рисунке в целом и на отдельных столбиках в частности. Предусмотрите использование цвета.
8. Ниже перечислено множество пар, составленных из роста и количества людей указанного роста (с точностью до пяти сантиметров): (170,7), (175,9), (180,23), (185,17), (190,6), (195,1). Как изобразить эти данные? Если вы не нашли лучшего решения, постройте гистограмму. Помните об осях и метках. Запишите данные в файл и считайте их оттуда.