递归方法

最近做了一个递归方法,比较简单的
费波那其数列的值,我写了一个递归方法如下
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,结果溢出,没有时间延迟

所以遇到类似问题千万要小心使用递归。
posted @ 2009-10-12 17:25  茂茂  阅读(370)  评论(2编辑  收藏  举报