小题目代码修改(牛顿法求cosx-x=0)
题目:
已知f(x)=cos(x)-x.x的初始值是3.14159/4,用牛顿法求解f(x)=0的近似值.要求精确到10的-6次.f(x)的牛顿法为
Xn+1=Xn-(cos(Xn)-Xn)/(sin(Xn)-1)
我是这么写的:
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
double f(int);
int n;
void main()
{
cin>>n;
if(((cos(f(n))-f(n))-f(n))<10e-6)
cout<<f(n)<<endl;
}
double f(int n)
{
if(n==1)
return 3.14159/4;
else
return f(n-1)-(cos(f(n-1))-f(n-1))/(sin(f(n-1))-1);
}
程序没有错误 但我输入0的时候就说stack overflow 这是为什么 我该怎么改?