一列数的规则如下: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);
}
}
高手说这段的代码的运行效率很低,为什么啊?那应该怎么写了啊?请大家帮忙看看吧
斐波那契数列,应该说递归本身的效率就不高。但是写法不同在性能上也是不一样的。
http://www.cnblogs.com/yanluckly/archive/2009/04/07/1431271.html 看看吧
我觉得不会低,递归本来就这样的效率
建议楼主可以去看看C语言里面讲堆栈联系到递归那一块 看完了楼主就知道递归的效率怎么样了!
一般情况下 能用循环则不用递归的 递归比较占资源