首页 > 解决方案 > 从 'int (*) (int)' 到 'int' 的无效转换

问题描述

有人可以向我解释为什么我会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;
}

标签: c++

解决方案


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

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

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

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


推荐阅读