我在sublime text 2
中写了这个c代码#include <stdio.h>
int main()
{
int n, m;
scanf("%d", &n);
m = fib(n);
printf("%d", m);
return 0;
}
int fib(int n)
{
if(n == 0)
return 0;
else if( n == 1)
return 1;
else
return fib(n - 1) + fib( n - 2);
}
但是当我构建它时,控制台出现以下错误:
/home/shieh/program.c: In function ‘int main()’:
/home/shieh/program.c:6:14: error: ‘fib’ was not declared in this scope
m = fib(n);
^
[Finished in 0.0s with exit code 1]
但是,这个c代码可以被在线测试平台接受。任何人都可以帮我解决这个问题吗?
我现在很困惑。
答案 0 :(得分:2)
你必须declare
你的功能before
你打电话给它!否则,main
中的函数调用无法完成,因为在compilation time
函数未知!(编译器从顶部到底部!)所以试试这个:
#include <stdio.h>
int fib(int n) {
if(n == 0)
return 0;
else if( n == 1)
return 1;
else
return fib(n - 1) + fib( n - 2);
}
int main() {
int n, m;
scanf("%d", &n);
m = fib(n);
printf("%d", m);
return 0;
}
或者你在function prototype
:
main
这样的内容
#include <stdio.h>
int fib(int n);
int main() {
int n, m;
scanf("%d", &n);
m = fib(n);
printf("%d", m);
return 0;
}
int fib(int n) {
if(n == 0)
return 0;
else if( n == 1)
return 1;
else
return fib(n - 1) + fib( n - 2);
}
(我更喜欢带有原型的variante,这样你的main总是位于文件的顶部,你可以看到原型该文件包含哪个函数!)