现在的位置: 首页 > 综合 > 正文

递归方法

2013年07月27日 ⁄ 综合 ⁄ 共 492字 ⁄ 字号 评论关闭
最近做了一个递归方法,比较简单的
费波那其数列的值,我写了一个递归方法如下
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,结果溢出,没有时间延迟

所以遇到类似问题千万要小心使用递归。

抱歉!评论已关闭.