寒星轩

There are innumerable stars in the sky, the smallest is me!

李星ID:starlee
200846次访问,排名344好友4人,关注者63
欢迎大家访问我的Blog。
主要是C++,设计模式,面向对象设计方面的技术文章。
[加为好友] [即时聊天] [发私信]
starlee的文章
原创 97 篇
翻译 0 篇
转载 45 篇
评论 304 篇
李星的公告
郑重声明

        本BLOG所发表的 原创文章,作者保留一切权利。必须经过作者本人同意后方可转载,并注名作者(StarLee)和出处(CSDN Blog)。
作者Email:
coolstarlee(at)sohu.com
最近评论
光良:这样在使用该c++程序时,还是需要安装.net的框架吧?
burningcpu:不过,我们要有以前DLL的源代码才行。
burningcpu:我觉得不需要这么复杂吧,C++写的DLL,其他语言不能使用,主要的原因就是编译后的函数名更改了,我们可以自己增加自定义模块(.def),在这个def文件中去讲函数名转换就可以了。这样其他的语言都可以调用C++写的DLL了。
tecancy:Open solution in VS.Net IDE ...
ERROR: Not found the solution file!

请问楼主,命令行出项上面提示,不能打开解决方案,怎么解决
谢谢
lizhenneng:很有意思的程序。作者写出来是为了让别人分享自己的知识,却有人在那里泼凉水,真替那些人悲哀。
文章分类
收藏
相册
友情链接
houdy的专栏
lijgame的专栏
lyrebing的专栏
禾青谷
存档
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 Fibonacci(斐波那契)序列的递归和非递归算法收藏

新一篇: 不用临时变量交换两个变量的值 | 旧一篇: 窗

    Fibonacci(斐波那契)序列的递归算法大家都已经很熟悉了:

//  Fibonacci序列第n项的值
//  递归算法
unsigned int Fib1(unsigned int n)
{
    
if (n == 1 || n == 2)
        
return 1;
    
else
        
return Fib(n - 1+ Fib(n - 2);
}

    而且递归算法的缺点是效率太低,下面是非递归算法:

//  Fibonacci序列第n项的值
//  非递归算法
unsigned int Fib2(unsigned int n)
{
    unsigned 
int nRet, nP, nPp;
    nRet = nP = nPp = 1;

    
if ((n == 1|| (n == 2))
        return nRet
;

    
for (unsigned int i = 3; i <= n; i++)
    {
        nRet 
= nP + nPp;

        nPp 
= nP;
        nP 
= nRet;
    }

    
return nRet;
}

    Fibonacci(斐波那契)序列:
    Fib(n) = Fib(n - 1) + Fib(n - 2), n>1, Fib(1) = Fib(2) = 1
    即:序列的第一和第二项是1,从第三项开始,后一项是前两项的和。
    序列的前8项是:
    1, 1, 2, 3, 5, 8, 13, 21

发表于 @ 2006年02月13日 16:25:00|评论(loading...)|编辑

新一篇: 不用临时变量交换两个变量的值 | 旧一篇: 窗

评论

#healer_kx 发表于2007-03-02 17:36:00  IP: 202.108.130.*
你那个递归的算法太...耗费了...
#virtualxmars 发表于2007-07-12 14:37:58  IP: 59.41.48.*
把 对i==1和i==2的判断放在循环内部实在不是一件明智的事情,这个应该放在外面才对
2007-07-12 15:07:05作者回复
你说的很对!我已经做了修改。
#gwerg 发表于2007-07-27 19:22:53  IP: 218.7.43.*
如果N是100的话不就溢出了吗
2007-07-27 21:02:58作者回复
这里只是说明一下递归和非递归算法的实现而已。对数据溢出并没有考虑。
#esuVessLan 发表于2007-08-09 16:46:21  IP: 207.46.55.*
你的非递归算法有问题,除非n=1或者n=2,其他n输入的结果都是0
#esuVessLan 发表于2007-08-09 16:48:03  IP: 207.46.55.*
unsigned int nP, nPp, nRet;
np,npp应该初始化为1
#starlee 发表于2007-08-10 09:17:33  IP: 218.83.157.*
回复楼上的esuVessLan:
非常感谢你指出我代码中的错误。
其实,以前的代码不是这样的。我是根据virtualxmars的建议对代码进行了修改。由于修改时的不细心造成了代码的错误。
现在,我重新修改了代码,并进行了测试,没有问题了。
发表评论  


登录
Csdn Blog version 3.1a
Copyright © 李星