首页 新闻 赞助 找找看

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

0
悬赏园豆:5 [已解决问题] 解决于 2010-09-06 17:36

 一列数的规则如下: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);
        }
    }

 

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

yixin841210的主页 yixin841210 | 小虾三级 | 园豆:1138
提问于:2010-08-24 21:57
< >
分享
最佳答案
0

斐波那契数列,应该说递归本身的效率就不高。但是写法不同在性能上也是不一样的。

http://www.cnblogs.com/yanluckly/archive/2009/04/07/1431271.html 看看吧

邢少 | 专家六级 |园豆:10926 | 2010-08-25 08:40
其他回答(2)
0

我觉得不会低,递归本来就这样的效率

jowo | 园豆:2834 (老鸟四级) | 2010-08-25 09:22
0

建议楼主可以去看看C语言里面讲堆栈联系到递归那一块 看完了楼主就知道递归的效率怎么样了!

一般情况下 能用循环则不用递归的 递归比较占资源

收获园豆:5
蛋蛋别 | 园豆:85 (初学一级) | 2010-09-04 23:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册