一道c++问题

.利用幂级数展开式求cosx的值,精度达到0.00001cos(x)=1-x2/2!+x4/4!-x6/6!+(-1)n*x2n/(2n)!其中通项使用递归函数float... .利用幂级数展开式求cosx的值,精度达到0.00001
cos(x)=1-x2/2!+x4/4!-x6/6!+(-1)n*x2n/(2n)!
其中通项使用递归函数 float f(float x,int n)计算

我的程序是这样的:
#include<iostream.h>
#include<math.h>
float x;
float f(int n,float x)
{
if(n>=1) return f(n-1,x)*(-1)*x*x/((2*n)*(2*n-1))+f(n-1,x);
if(n==0) return (1);
}
void main(void)

{
float x;

cin>>x;
for(int n=0;f(n,x)-f(n-1,x)>0.000001;n++)
{
cout<<f(n,x)<<endl;
}
}
不知道哪有问题
但是
展开
 我来答
NBA周报
2013-11-08 · TA获得超过203个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:152万
展开全部
//你的程序f函数写的不对,模块化也不太好,你看下我写的这个,对比下
#include <iostream>
#include <cmath>
#include <windows.h>
using namespace std;

/*
*求n的阶乘
*/
int Factorial(int n)
{
if( n == 0 || n == 1)
return 1;
else
return (n * Factorial(n - 1));
}

float f(float f, int n)
{
float x = 1.0;
for(int i = 1; i <= n; i++)
{
x += pow(-1, i) * pow(f, 2 * i) / Factorial(2 * i);
}
return x;
}
int main()
{
float Result;
int i = 0;
float x;
cin >> x;
for(i = 1; f(x, i + 1) - f(x, i) > 0.000001; i++);
Result = f(x, i);
cout << Result << endl;
system("pause");
return 0;
}
在龙源口用功读书的韩信草
2013-11-07 · TA获得超过181个赞
知道答主
回答量:104
采纳率:0%
帮助的人:58.2万
展开全部
for(int n=0;f(n,x)-f(n-1,x)>0.000001;n++)
你n的初值为0,那f(n-1,x)就是f(-1,0).而你的f()函数没有n==-1的函数体。
追问

改了  还是不行0 0

 

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式