当前位置:编程学习 > C#/ASP.NET >>

【求助】一道计算题C#实现

按钮点击下去 开始执行循环  下面这个方法执行效率很慢  有没有比较好点的方法 比如C里面的函数指针那样的。委托不太会用,求助!
就是比如n=5的时候,Vo_function(5)是有值了,但是在执行n=6的时候,怎样把Vo_function(5)的值拿来直接用而不去继续运算



        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 private Dictionary<int, double> voDict = new Dictionary<int, double>();
        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;
        } --------------------编程问答-------------------- 加个 临时变量 存储上一个计算的结果 --------------------编程问答--------------------
引用楼主  的回复:
按钮点击下去 开始执行循环 下面这个方法执行效率很慢 有没有比较好点的方法 比如C里面的函数指针那样的。委托不太会用,求助!
就是比如n=5的时候,Vo_function(5)是有值了,但是在执行n=6的时候,怎样把Vo_function(5)的值拿来直接用而不去继续运算



C# code

        private void button1_Click(object se……


这叫做“数据缓存”。可以使用 System.Web.Cacheing.Cache 类来实现数据缓存管理机制。 --------------------编程问答-------------------- 虽说没看代码,看到了
Dictionary 应该可以满足你需求,动态规划哦。 
引用 2 楼  的回复:
static private Dictionary<int, double> voDict = new Dictionary<int, double>();
  static Dictionary<int, double> ioDict = new Dictionary<int, double>();
  public static double Vo_function(int n)
  {……
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,