Fibonacci数列(第一项起):1,1,2,3,5,8,13,21,…。要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci 数。例如,fib(7)的返回值是13。
【输入形式】
从键盘输入2个整数m和n。
【输出形式】
输出m ~n之间所有的Fibonacci 数。
【样例输入1】(下划线部分为键盘输入,其余部分为程序输出)
Input m: 20
Input n: 100
【样例输出1】
21 34 55 89
【样例输入2】(下划线部分为键盘输入,其余部分为程序输出)
Input m: 50
Input n: 300
【样例输出2】
55 89 144 233
我的答案运行时间过长
#include<stdio.h>
int main(void)
{
int i,m,n;
int fib(int n);
printf("Input m: ");
scanf("%d",&m);
printf("Input n: ");
scanf("%d",&n);
while(m>=1&&n<=10000&&m<=n)
{
for(i=1;i<=n;i++)
if(fib(i)>=m&&fib(i)<=n)
printf("%d ",fib(i));
}
return 0;
}
int fib(int n)
{
if(n==1)
return 1;
if(n==2)
return 1;
else
return fib(n-1)+fib(n-2);
}
作业系统说错误是:
5_7.c: (in function main)
5_7.c:14:9: Function fib shadows outer declaration
An outer declaration is shadowed by the local declaration. (Use -shadow to
inhibit warning)
5_7.c:10:1: Previous definition of fib: [function (int) returns int]
5_7.c:16:5: Return value (type int) ignored: scanf("%d", &m)
Result returned by function call is not used. If this is intended, can cast
result to (void) to eliminate message. (Use -retvalint to inhibit warning)
5_7.c:18:2: Return value (type int) ignored: scanf("%d", &n)
5_7.c:22:7: Variable fib used before definition
An rvalue is used that may not be initialized to a value on some execution
path. (Use -usedef to inhibit warning)
5_7.c:2:5: Function exported but not used outside 5_7: fib
A declaration is exported, but not used outside this module. Declaration can
use static qualifier. (Use -exportlocal to inhibit warning)
5_7.c:10:1: Definition of fib