我正在创建一个简单的程序,我正在使用long long int
,但是我遇到了编译器错误。请帮我解决这个错误。
错误]
的冲突类型countTrees
我在这一行出错了
long long int countTrees(long long int numKeys)
这是我的代码:
#include <stdio.h>
#include <math.h>
int main()
{
int t;
scanf("%d", &t);
while(t--)
{
long long int n;
scanf("%lld", &n);
long long int result = countTrees(n);
printf("%lld\n",result);
}
return 0;
}
long long int countTrees(long long int numKeys) {
if (numKeys <=1) {
return(1);
}
else {
long long int sum = 0;
long long int left,right,root;
for (root=1; root<=numKeys; root++) {
left = countTrees(root - 1);
right = countTrees(numKeys - root);
sum += left*right;
}
return(sum);
}
}
答案 0 :(得分:3)
您收到错误,因为countTrees()
的隐式声明与实际定义不匹配。
澄清&#34;隐含声明&#34;当一个函数被调用但编译器还没有看到函数定义时,假设该函数返回int
并接受任何数量(和类型)的参数。
在C99
和将来的标准中,隐式声明无效,因此编译器应该抱怨一个尚未定义的函数(或至少是原型)使用(调用)。
要解决此问题,您可以执行
main()
之前定义函数。