猿问

大家帮忙看 看代码?递归的

一列数的规则如下:1,1,2,3,5,8,13,21,34………,求数列前n项之和

我是这么写的:

 class Program
    {
        static void Main(string[] args)
        {

                Console.WriteLine("请输入你要求的前多少项的和?只能输入数字");
                int n = int.Parse(Console.ReadLine());
                //定义保存前N项和的变量
                int sum = 0;
                for (int i = 1; i <= n; i++)
                {
                    sum += DiGui(i);
                }

                //输出前N项的和
                Console.WriteLine("您要求的前{0}项的和为: {1}", n, sum);

        }

       //递归方法
        static int DiGui(int n)
        {
            if (n == 1 || n == 2)
            {
                return 1;
            }
            return DiGui(n - 1) + DiGui(n - 2);
        }
    }

 

高手说这段的代码的运行效率很低,为什么啊?那应该怎么写了啊?请大家帮忙看看吧


当年话下
浏览 434回答 2
2回答

慕容3067478

建议楼主可以去看看C语言里面讲堆栈联系到递归那一块 看完了楼主就知道递归的效率怎么样了!一般情况下 能用循环则不用递归的 递归比较占资源
随时随地看视频慕课网APP
我要回答