c++ - 从 '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;
}
解决方案
在int combinacao(int num)
,你有return somatorio;
。
根据函数签名,您必须返回一个整数。Butsomatorio
是一个接受 anint
并返回int
( int (*)(int)
) 的函数,它本身不是 an int
。
假设您要计算二项式系数的总和,我是否正确?在这种情况下,我可以告诉您,您提供的对系数求和的方法不会按预期工作。实际上,您只需将每个值乘以 2,而从不保存结果。
如果要将值相加,则必须定义一个变量来存储总和,将系数添加到该变量中,然后返回存储在该变量中的值。
推荐阅读
- linux - My Bash script ends after entering chroot environment
- javascript - javascript Get the difference between an element of an array and the previous one
- python - Do I really need to list.copy() a list before append?
- c# - How to get date and time from a file on FTP
- c++ - 打印功能中的虚拟功能不被覆盖
- video - 如何从很长的 youtube 链接列表中创建播放列表
- java - Java,将字符更改为字符串
- javascript - Javascript - 在悬停时添加类并保持它直到悬停在另一个元素上
- redux - 如何从 redux 工具包中的 prepareHeaders 访问 url
- javascript - 如果未登录则重定向用户(Firebase/Vanila JS)