读书人

算法,该怎么处理

发布时间: 2013-11-18 11:57:15 作者: rapoo

算法
斐波那契数列为:
序 号: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;
}

读书人网 >C++

热点推荐