C++用递归调用的方法用牛顿迭代法

来源:百度知道 编辑:UC知道 时间:2024/06/05 13:23:10
用递归调用由牛顿迭代法求方程f(x)=x*x+3*x-4=0的近似解,迭代公式为
x1=x0-f(x0)/f'(x0),x0 的初值为0。
小弟是初学者,请各位帮帮忙。

虽说不用递归更简单一些,但是楼上的没有用到递归吧...
递归实现如下:

#include<iostream>
#include<cmath>
using namespace std;
void fun(double, double);
int main()
{
double x0 = 0, epsilon; //将x初值赋为0,根据题目要求
cout << "请输入允许的最大误差: ";
cin >> epsilon;
fun(x0, epsilon);
return 0;
}
void fun(double x0, double epsilon)
{
double x1 = x0;
x0 = (x1 - (x1*x1 + 3*x1 - 4) / (2*x1 + 3)); //按指定的方程计算新的近似根
if(fabs(x0 - x1) > epsilon) //大于误差值的时候继续迭代
fun(x0, epsilon);
else
cout << "方程的近似根是" << x0 << endl;
}

#include<iostream.h>
int main()
{double x0,x1,wucha;
long k,n;
cout<<"输入初值x0及最大迭代次数n及误差wucha:"<<endl;
cin>>x0>>n>>wucha;
k=0;
while(k<n)
{k++;
x1=x0-(x0*x0+3*x0-4)/(2*x0+3);
if(x1-x0>=-wucha&& x1-x0<=wucha)
{cout<<&q