从“int (*) (int)”到“int”的无效转换

-3 c++

有人可以向我解释为什么我会return somatorio; 在第 24 行收到此警告吗?

从“int (*) (int)”到“int”的无效转换

#include <iostream>

using namespace std;

int somatorio(int soma){
    soma+=soma;
    return soma;
}

int fatorial (int n){
    if (n==0)
        return 1;
    else 
        return (n * fatorial (n-1));
}
        
int combinacao(int num){
    int k = 1;
    while(k<=num){
    int combinacao = (fatorial(num)) / ((fatorial(k)) * (fatorial(num - k)));
    somatorio (combinacao);
    k++;
    }
    return somatorio;  // <-- Warning here
}

int main()
{
    int num;
    cin>>num;
    cout<<combinacao(num)<<endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Xav*_*ver 6

在int combinacao(int num),你有return somatorio;。

根据函数签名,您必须返回一个整数。但是somatorio是一个接受 anint并返回一个int( int (*)(int))的函数,它本身不是一个int。

我假设您要计算二项式系数的总和是否正确?在这种情况下,我可以告诉您,您提供的汇总系数的方法不会按预期工作。实际上,您只将每个值乘以 2,而从不保存结果。

如果要对值求和,则必须定义一个变量来存储总和,将系数添加到该变量中,然后返回存储在该变量中的值。

  • @VictoriaMoraes 这取决于您期望代码做什么,您还没有真正解释过。 (4认同)
  • @VictoriaMoraes 代码中有很多奇怪的事情。我希望警告并不是您的代码的唯一错误。但在你说出它应该做什么之前,任何人都很难提出任何建议。 (2认同)
  • 刚刚编辑了我的答案。我希望你现在应该做什么更清楚了。 (2认同)