【发布时间】:2013-09-14 06:29:42
【问题描述】:
所以,我有负责拉格朗日多项式计算的代码。此代码大量使用委托(fn_result 声明为 delegate float fn_result (float x)。尽管使用了递归,但 multiplier(x) is 已正确计算;但是,尝试计算 polynom(x) 会提供堆栈溢出异常。请有人告诉我为什么会这样?(注意:polynom(x) 已初始化:)
fn_result polynom = x => 0.0f;
for (int i = 0; i != Lagrange_node_points.Length; i++)
{
fn_result multiplier = x => Lagrange_node_points[i].Y;
for (int k = 0; k != Lagrange_node_points.Length; k++) // p[k] cycle
if (k != i)
multiplier = x => (multiplier(x) * (x - Lagrange_node_points[k].X) / (Lagrange_node_points[i].X - Lagrange_node_points[k].X));
polynom = y => (polynom(y) + multiplier(y));
}
【问题讨论】:
-
因为要计算
polynom(y),所以先计算polynom(y)? -
fn_result multiplier = x => Lagrange_node_points[i].Y;是你的内涵i还是x?
标签: c# delegates functional-programming