Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
{
if (m > n / 2)
m = n - m;
if (m == 0)
Return 1;
Else
return C(n, m - 1) * (n - m + 1) / m;
}
Этот вариант функции позволяет точно вычислять значения биномиальных коэффициентов при n < 31. Диапазон решения расширен почти в два раза.
Передача функций в качестве параметров
Имя любой функции представляет собой указатель, то есть адрес памяти, определяющий, где находится функция, и задающий точку входа в функцию. Убедиться в этом можно выведя на экран значение имени функции. Например:
cout << C << endl; // C – это функция из предыдущего параграфа
На экране будет отображен в шестнадцатеричном формате адрес точки входа в функцию С, вычисляющую значения биномиальных коэффициентов.
Используя тот факт, что имена функций являются обычными указателями, можно передавать функции в качестве аргументов других функций.
Для этого необходимо специальным образом определить тип данных указателя на функции, передаваемые в качестве аргумента, который должен соответствовать характеристикам передаваемых функций (тип возвращаемого значения, параметры функции).
Рассмотрим пример:
Double add (double a, double b)
{
return a + b;
}
Double mul (double a, double b)
{
return a * b;
}
typedef double (*f_Ptr) (double, double);
Double oper (f_Ptr F, double a, double b)
{
Return F (a, b);
}
Дата публикования: 2014-11-28; Прочитано: 174 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!