首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

算法,该怎么处理

2013-11-18 
算法斐波那契数列为:序号:012345 ...斐波那契数:011235 ...根据给定的值n,输出第n个斐波那契数。输入第一行

算法
斐波那契数列为:
序        号:0   1   2   3   4   5 ...
斐波那契数:0   1   1   2   3   5 ...
根据给定的值n,输出第n个斐波那契数。

输入
第一行为测试数据的个数k
后面k行,每行一个n值(0<=n<=75)
输出
每个n值对应的斐波那契数。
样例输入
3
2
3
4
样例输出
1
2
3




谁能提供c#代码?谢谢
[解决办法]



int GetNumber( int n )
{
    if( n < 2 )
        return n;
    else
        return ( GetNumber( n - 1 ) + GetNumber( n - 2 ));
}

void main()
{
    int n;
    ReadIntfromFile( &n, yourFile );
    for( int i = 0; i < n; ++ i )
    {
         int k;
         ReadIntfromFile( &k, yourFile );
         printf( "%d\r\n", GetNumber( k ));
    }
}


[解决办法]
引用:
这个,lz搜一下,应该一大堆的吧,75项的话不用高精度用long long就可以存下了吧
这不单纯是存的下的问题吧,75项用递归什么的估计要算半天了,而且栈空间有限啊...
[解决办法]
写了个尾递归的版本,仅供参考:
#include <iostream>
typedef unsigned long long Long;

Long  GetNumber( int n , Long sum , Long pre)
{
if( n <1 )
return sum;
else
return GetNumber(n-1,sum+pre,sum);
}

Long GetNumber(int n){
return GetNumber(n,0,1);
}

int main()
{
int n=75;
for(int i=0;i<n;i++)
std::cout<<i<<": "<<GetNumber(i)<<std::endl;
return 0;
}

热点排行