递归方法
最近做了一个递归方法,比较简单的
求费波那其数列的值,我写了一个递归方法如下
public static Int64 f(int x)
{
if (x <= 2)
return 1;
else
return f(x - 1) + f(x - 2);
}
x=40的时候需要5秒钟左右
x=41的时候需要10秒钟左右
x=50已经没有耐心等了
我选择了另外一种方法,也是突然想到的迭代法,如下:
int x;
Int64 x = 1;
Int64 y = 1;
Int64 z = 2;
for (int i = 4; i <= x; i++)
{
x = y;
y = z;
z = x + y;
}
Console.WriteLine(z);
x=1000,正常出现,没有时间延迟
测试x=10000,结果溢出,没有时间延迟
所以遇到类似问题千万要小心使用递归。
求费波那其数列的值,我写了一个递归方法如下
public static Int64 f(int x)
{
if (x <= 2)
return 1;
else
return f(x - 1) + f(x - 2);
}
x=40的时候需要5秒钟左右
x=41的时候需要10秒钟左右
x=50已经没有耐心等了
我选择了另外一种方法,也是突然想到的迭代法,如下:
int x;
Int64 x = 1;
Int64 y = 1;
Int64 z = 2;
for (int i = 4; i <= x; i++)
{
x = y;
y = z;
z = x + y;
}
Console.WriteLine(z);
x=1000,正常出现,没有时间延迟
测试x=10000,结果溢出,没有时间延迟
所以遇到类似问题千万要小心使用递归。