C++ 从';国际(*)(国际)和#x27;至';int';
有人能解释一下为什么我在返回somatorio时收到这个警告吗代码>在第24行 从“int(*)(int)”到“int”的转换无效C++ 从';国际(*)(国际)和#x27;至';int';,c++,C++,有人能解释一下为什么我在返回somatorio时收到这个警告吗在第24行 从“int(*)(int)”到“int”的转换无效 #包括 使用名称空间std; 内部躯体(内部躯体){ 胞体+=胞体; 返回体; } 国际旅行社(国际n){ 如果(n==0) 返回1; 其他的 回报率(n*n-1); } int combinacao(int num){ int k=1; while(knum; 在intcombinaco(intnum)中,您有返回somatorio; 基于函数签名,您必须返回一个整数。
#包括
使用名称空间std;
内部躯体(内部躯体){
胞体+=胞体;
返回体;
}
国际旅行社(国际n){
如果(n==0)
返回1;
其他的
回报率(n*n-1);
}
int combinacao(int num){
int k=1;
while(knum;
在intcombinaco(intnum)
中,您有返回somatorio;
基于函数签名,您必须返回一个整数。但是somatorio
是一个函数,它接受int
并返回int
(int(*)(int)
),它本身不是int
我假设你想计算二项式系数之和,对吗?在这种情况下,我可以告诉你,你提供的求和系数的方法不会像预期的那样起作用。事实上,你只需将每个值乘以2,而不会保存结果
如果要对值进行求和,必须定义一个变量来存储求和,将系数添加到此变量,然后返回存储在此变量中的值。请不要在问题中添加填充文本以绕过系统要求。这些要求是有原因的;在这种情况下,添加警告文本,您需要设置。只需将int-combinaco(int-num)
的签名更改为auto-combinaco(int-num)->int(*)(int)
,您就可以开始了。somatorio
是一个函数,而不是一个数字。因为您编写了int-combinaco
,所以它应该返回一个数字,而不是一个函数。在该函数中int-combinaco(int-num)
您有somatorio(combinacao);
计算一个值,然后将结果扔掉。我不确定您是否要对所有这些结果求和,或者是什么。如何将结果存储在变量中?解决方案是什么?@VictoriaMoraes这取决于您希望代码做什么,您没有真正解释。我需要这些结果的和combinations@VictoriaMoraes有一个代码中有很多奇怪的东西。我想警告并不是你代码中唯一的错误。但是,在你说出它应该做什么之前,任何人都很难提出任何建议。只是编辑了我的答案。我希望你现在能更清楚地知道你要做什么。
#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;
}