通过动态规划计算欧拉五边形数定理
这是代码的链接,我也将其发布在下面。
#include<math.h>
void pentagon(int n)
{
int k,p[10],a[10],b[10];
if(n<0)
p[n]=0;
if(n==0)
p[n]=1;
for(k=1;k<n;k++)
{
a[k]=((3*pow(k,2))-k)/2;
b[k]=((3*pow(k,2))+k)/2;
}
for(k=1;k<n;k++)
{
p[n]=pow(-1,k-1)(pentagon(n-a[k])+pentagon(n-b[k]));
}
cout<<p[n];
}
int main()
{
pentagon(4);
return(0);
}
我收到以下错误:
在函数“void pentagon(int)”中: 第 11 行:错误:重载 'pow(int&, int)' 的调用不明确 编译因 -Wfatal-errors 终止
Here is a link to the code and I have posted it below too.
#include<math.h>
void pentagon(int n)
{
int k,p[10],a[10],b[10];
if(n<0)
p[n]=0;
if(n==0)
p[n]=1;
for(k=1;k<n;k++)
{
a[k]=((3*pow(k,2))-k)/2;
b[k]=((3*pow(k,2))+k)/2;
}
for(k=1;k<n;k++)
{
p[n]=pow(-1,k-1)(pentagon(n-a[k])+pentagon(n-b[k]));
}
cout<<p[n];
}
int main()
{
pentagon(4);
return(0);
}
I am getting the following error :
In function 'void pentagon(int)':
Line 11: error: call of overloaded 'pow(int&, int)' is ambiguous
compilation terminated due to -Wfatal-errors
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
将
2
替换为2.0
作为pow
的第二个参数(第 11、12 行)。另请参阅:http://www.cplusplus.com/reference/clibrary/cmath/pow /
Replace
2
with2.0
as the second argument topow
(line 11, 12).See also: http://www.cplusplus.com/reference/clibrary/cmath/pow/
收集并更正所有错误(和警告)会生成以下代码 (codepad)。我对发生的变化发表了一些评论。
但我猜底层算法仍然是错误的,因为输出是:
Collecting and correcting all the errors (and warnings) leads to the following code (codepad). I made some comments about what changed.
but I guess the underlying algorithm is still wrong, as the output is:
以下是我发现的一些错误或改进:
添加了 iostream &使用命名空间 std:
将
pow(k,2)
更改为 k*k:将乘法符号添加到
p[n]
赋值:pentagon
方法需要返回一个值才能在上面的语句中使用它。Here are some errors or improvements I spotted:
Added iostream & using namespace std:
Changed
pow(k,2)
to k*k:Add multiplication symbol to
p[n]
assignment:The
pentagon
method needs to return a value in order to use it in the above statement.您缺少等式的求和部分。
请参阅http://en.wikipedia.org/wiki/Pentagonal_number_theorem。
您的
pentagon
函数一次仅计算一项。没有代码可以对所有项求和。You're missing the summation part of the equation.
See http://en.wikipedia.org/wiki/Pentagonal_number_theorem.
Your
pentagon
function only calculates one term at a time. There is no code that sums all of the terms.