方法不是长long int值显示错误

时间:2015-07-01 11:50:28

标签: c++ c tree binary-search-tree

我正在创建一个简单的程序,我正在使用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);
  }
}

1 个答案:

答案 0 :(得分:3)

您收到错误,因为countTrees()的隐式声明与实际定义不匹配。

澄清&#34;隐含声明&#34;当一个函数被调用但编译器还没有看到函数定义时,假设该函数返回int并接受任何数量(和类型)的参数。

C99和将来的标准中,隐式声明无效,因此编译器应该抱怨一个尚未定义的函数(或至少是原型)使用(调用)。

要解决此问题,您可以执行

  • 添加您的功能的前向声明。
  • main()之前定义函数。