2022.10.21我用了C测试用例全错,递归有一组过不去,非递归通过,翻课本155。问题应该是出现在数据大上。(ydyz)
编程要求
本题要求实现一个递归函数int fib(int n),返回斐波那契数列的第n项。例如如果n=5,则该函数应该返回5。
注:该数列的前面几项是: 1 1 2 3 5 8 13 21 34 …
根据提示,在右侧编辑器补充代码,计算并输出斐波那契数列第n项的值。
测试说明
平台会对你编写的代码进行测试:
测试输入:5
预期输出:5
测试输入:1
预期输出:1
提示:1 <= n <= 46
开始你的任务吧,祝你成功!
C++代码
#include <stdio.h>
/**
* @Param(n):1<=n<=46
* 功能:返回斐波那契数列的第n项
*/
int fib(int n)
{
/******************** begin ********************/
int a=1,b=1,i,s;
if(n==1||n==2)
return(1);
else
{
for(i=3;i<=n;i++)
{
s=a+b;
a=b;
b=s;
}
return s;
}
/******************** end **********************/
}
int main(int argc, char const *argv[])
{
int n;
while (scanf("%d", &n) != EOF) {
printf("%d\n", fib(n));
}
return 0;
}