如何修复我的代码?
How to fix my code?
具有给定精度的 cos(x) 的泰勒级数展开
每股收益
递归方法
[Error] overloaded function with no contextual type information
我该如何解决这个错误?
#include <stdio.h>
#include <math.h>
double cos(double x, double eps, double s=0,double n=0,double a=0) {
if (abs(n)<1){
cos=cos(x, eps,1,1,1);
}
else {
a = -a*x*x / ((2*n-1) * (2*n));
if (abs(a)<=eps) {
cos=s;
}
else{
cos=cos(x, eps, s+a, a,n+1);
}
}
}
int main () {
double x;
scanf("%f", &x);
cos(x, 0.000000000000001);
}
您包含了 math.h
,它有一个名为 cos
的函数,其工作方式略有不同。
您已经重载了该名称(例如,编写了另一个名称也为 cos
的函数),但没有为编译器提供任何方法来推断您要调用哪个版本的 cos
。
通过将您的函数命名为不同且独特的名称来解决此问题。
这是我的修复尝试:
double TaylorCOS(double x, double eps, double s=0,double n=0,double a=0)
{
if (abs(n)<1)
{
return TaylorCOS(x, eps,1,1,1);
}
a = -a*x*x / ((2*n-1) * (2*n));
if (abs(a)<=eps)
{
return s;
}
return TaylorCOS(x, eps, s+a, a,n+1);
}
您不能像在
中那样分配函数标识符
cos=s;
cos=cos(x, eps, s+a, a,n+1);
既不在 C 中,也不在 C++ 中。该程序已损坏,无法修复。
具有给定精度的 cos(x) 的泰勒级数展开
每股收益 递归方法
[Error] overloaded function with no contextual type information
我该如何解决这个错误?
#include <stdio.h>
#include <math.h>
double cos(double x, double eps, double s=0,double n=0,double a=0) {
if (abs(n)<1){
cos=cos(x, eps,1,1,1);
}
else {
a = -a*x*x / ((2*n-1) * (2*n));
if (abs(a)<=eps) {
cos=s;
}
else{
cos=cos(x, eps, s+a, a,n+1);
}
}
}
int main () {
double x;
scanf("%f", &x);
cos(x, 0.000000000000001);
}
您包含了 math.h
,它有一个名为 cos
的函数,其工作方式略有不同。
您已经重载了该名称(例如,编写了另一个名称也为 cos
的函数),但没有为编译器提供任何方法来推断您要调用哪个版本的 cos
。
通过将您的函数命名为不同且独特的名称来解决此问题。
这是我的修复尝试:
double TaylorCOS(double x, double eps, double s=0,double n=0,double a=0)
{
if (abs(n)<1)
{
return TaylorCOS(x, eps,1,1,1);
}
a = -a*x*x / ((2*n-1) * (2*n));
if (abs(a)<=eps)
{
return s;
}
return TaylorCOS(x, eps, s+a, a,n+1);
}
您不能像在
中那样分配函数标识符cos=s;
cos=cos(x, eps, s+a, a,n+1);
既不在 C 中,也不在 C++ 中。该程序已损坏,无法修复。