【求助】一道计算题C#实现
按钮点击下去 开始执行循环 下面这个方法执行效率很慢 有没有比较好点的方法 比如C里面的函数指针那样的。委托不太会用,求助!就是比如n=5的时候,Vo_function(5)是有值了,但是在执行n=6的时候,怎样把Vo_function(5)的值拿来直接用而不去继续运算
--------------------编程问答-------------------- --------------------编程问答-------------------- static private Dictionary<int, double> voDict = new Dictionary<int, double>();
private void button1_Click(object sender, EventArgs e)
{
for (int n = 1; n < 2000; n++)
{
double voo = Vo_function(n);
double ioo = Io_function(n);
}
}
public static double Vo_function(int n)
{
double jieguo;
if (n == 1)
{
jieguo = 0;
}
else
{
jieguo = Vo_function(n - 1) * 2 + Io_function(n - 1) * 1 + 2;
}
return jieguo;
}
public static double Io_function(int n)
{
double jieguo;
if (n == 1)
{
jieguo = 0;
}
else
{
jieguo = Io_function(n - 1) * 2 + Vo_function(n - 1) * 3 + 3;
}
return jieguo;
}
static Dictionary<int, double> ioDict = new Dictionary<int, double>();
public static double Vo_function(int n)
{
if (voDict.ContainsKey(n))
return voDict[n];
double jieguo;
if (n == 1)
{
jieguo = 0;
}
else
{
jieguo = Vo_function(n - 1) * 2 + Io_function(n - 1) * 1 + 2;
}
voDict.Add(n, jieguo);
return jieguo;
}
public static double Io_function(int n)
{
if (ioDict.ContainsKey(n))
return ioDict[n];
double jieguo;
if (n == 1)
{
jieguo = 0;
}
else
{
jieguo = Io_function(n - 1) * 2 + Vo_function(n - 1) * 3 + 3;
}
ioDict.Add(n, jieguo);
return jieguo;
} --------------------编程问答-------------------- 加个 临时变量 存储上一个计算的结果 --------------------编程问答--------------------
这叫做“数据缓存”。可以使用 System.Web.Cacheing.Cache 类来实现数据缓存管理机制。 --------------------编程问答-------------------- 虽说没看代码,看到了
Dictionary 应该可以满足你需求,动态规划哦。
补充:.NET技术 , ASP.NET