您的位置:首页 > 其它

题目1075:斐波那契数列

2013-06-02 22:57 211 查看
时间限制:5 秒

内存限制:32 兆

特殊判题:否

提交:1937

解决:1091

题目描述:

编写一个求斐波那契数列的递归函数,输入n值,使用该递归函数,输出如样例输出的斐波那契数列。

输入:

一个整型数n

输出:

题目可能有多组不同的测试数据,对于每组输入数据,

按题目的要求输出相应的斐波那契图形。

样例输入:
6


样例输出:
0
0 1 1
0 1 1 2 3
0 1 1 2 3 5 8
0 1 1 2 3 5 8 13 21
0 1 1 2 3 5 8 13 21 34 55


来源:2002年清华大学计算机研究生机试真题(第II套)
答疑:解题遇到问题?分享解题心得?讨论本题请访问:http://t.jobdu.com/thread-7798-1-1.html
代码1:先创建斐波那契数列,再按格式输出  运算较快
#include<stdio.h>
int main()
{
int n;
int s[1024] = {0};
s[1] = 1;
int i;
for(i = 2; i < 1024; i++)
{
s[i] = s[i-1] + s[i-2];
}
int j ;
while(scanf("%d",&n) != EOF)
{
j = 1;
while(n > 0)
{
for(i = 0; i < j; i++)
{
if(i == j-1)
printf("%d\n",s[i]);
else
printf("%d ",s[i]);
}
j += 2;
n--;
}
}
}
/**************************************************************
Problem: 1075
User:
Language: C
Result: Accepted
Time:10 ms
Memory:912 kb
****************************************************************/


代码2:打印时调用斐波那契函数(递归调用),运算较慢
#include<stdio.h>
int f(int n)
{
if(n == 0)
return 0;
if(n == 1)
return 1;
return f(n-1) + f(n-2);
}
int main()
{
int n;
int i,j;
while(scanf("%d",&n) != EOF)
{
for(i = 0; i < n; i++)
{
for(j = 0; j < 2*i + 1; j++)
{
if(j == 2*i)
printf("%d\n",f(j));
else
printf("%d ",f(j));
}
}

}
}
/**************************************************************
Problem: 1075
User:
Language: C
Result: Accepted
Time:2810 ms
Memory:912 kb
****************************************************************/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: