C语言中用递归算法实现二分法求方程在(0,5)的近似解?

#include<stdio.h>#include<math.h>intmain(){doublecalculate(floaty1,floaty2,floatfy1,f... #include <stdio.h>#include <math.h>int main() { double calculate(float y1,float y2,float fy1,float fy2); float x1,x2,fx1,fx2; double a; printf("enter x1 & x2:"); scanf("%f,%f",&x1,&x2); fx1=(((x1+3)*x1-8)*x1+12)*x1-10; fx2=(((x2+3)*x2-8)*x2+12)*x2-10; a=calculate(x1,x2,fx1,fx2); printf("x=%lf\n",a); return 0;} double calculate(float y1,float y2,float fy1,float fy2) { float fy0,y0; double a; y0=(y1+y2)/2; fy0=(((y0+3)*y0-8)*y0+12)*y0-10; printf("%f ",y0); if(fabs(fy0)>=1e-10) { if ((fy0*fy1)<0) { y2=y0; fy2=fy0; } else { y1=y0; fy1=fy0; } a=calculate(y1,y2,fy1,fy2); } else { a=y0; printf("%6.2f",a); } return(a);} 展开
 我来答
听不清啊
高粉答主

2020-05-11 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

重点改动:

scanf("%lf,%lf",&x1,&x2);

#include <stdio.h>

#include <math.h>

int main()

{ double calculate(double y1,double y2,double fy1,double fy2);

  double x1,x2,fx1,fx2;

  double a;

  printf("enter x1 & x2:");

  scanf("%lf,%lf",&x1,&x2);

  fx1=(((x1+3)*x1-8)*x1+12)*x1-10;

  fx2=(((x2+3)*x2-8)*x2+12)*x2-10;

  printf("%f %f %f %f\n",x1,x2,fx1,fx2);

  a=calculate(x1,x2,fx1,fx2);

  printf("x=%lf\n",a);

  return 0;

}

double calculate(double y1,double y2,double fy1,double fy2)

{ double fy0,y0;

  double a;

  y0=(y1+y2)/2;

  fy0=(((y0+3)*y0-8)*y0+12)*y0-10;

  printf("%f ",y0);

  if(fabs(fy0)>=1e-10)

  { if ((fy0*fy1)<0)

    { y2=y0;

      fy2=fy0;

    }

    else

    { y1=y0;

      fy1=fy0;

    }

    a=calculate(y1,y2,fy1,fy2);

  }

  else

  { a=y0;

    printf("%6.2f",a);

  }

  return(a);

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式