/// <summary> /// (Вспомогательная) Находит сумму всех вещественных чисел A, A + h, A + 2h , … в диапазоне [A, B], удовлетворяющих заданному предикату. /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <param name="h"></param> /// <param name="pred"></param> /// <returns></returns> static double SumPred(double a, double b, double h, MyPredOfDouble pred) { Debug.Assert(a <= b + h, "A<=B+h in SumPred!"); if (a > b) { return(0); } if (a == b) { return(a); } if (pred(a)) { if (a == b) { return(a); } return(a + SumPred(a + h, b, h, pred)); } return(SumPred(a + h, b, h, pred)); }
/// <summary> /// (Активирующая) Находит сумму всех вещественных чисел A, A + h, A + 2h , … в диапазоне [A, B], удовлетворяющих заданному предикату. /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <param name="h"></param> /// <param name="pred"></param> /// <returns></returns> static double ActSumPred(double a, double b, double h, MyPredOfDouble pred) { Debug.Assert(a <= b, "A<=B in SumPred!"); return(SumPred(a, b, h, pred)); }