试图计算一个接近e但程序不起作用的公式



Im 编写了一个代码来计算这个公式 ((2*x+1)/(2*x-1))^x,随着 x 的增加,这个表达式越来越接近 e=2.7182818.当该表达式和 e 之间的差异小于 .000001 时,它将退出循环并显示 x 是什么。问题是首先它会计算错误,然后当我进行一些调整时,循环开始永远持续下去。感谢您提前提供的帮助。

#include <stdio.h>
#include <math.h>
int main(){
    int x;
    float z,y;
    printf("X's value       Absolute Differencen");
    x=1;
    y=(2*x+1)/(2*x-1);
    z=fabsf(expf(1)-pow(y,x));
    for(x=2;z>0.000001;++x){
        y=(2*x+1)/(2*x-1);
        z=fabsf(expf(1)-pow(y,x));
        printf("%d               %.7fn",x,z);
    }
    printf("The number in which is closest to e is %dn",x);
    printf("%.7f             %.7fn",expf(1),pow(y,x));
     return(0);
}

y=(2*x+1)/(2*x-1)更改为y = 1.*(2*x+1)/(2*x-1)

否则,y被四舍五入为 1,您将陷入无限循环。要查看这一点,只需在每次迭代时打印y

printf("%d               %.7f   %.7fn",x,z, y);
                                ^^^^         ^

相关内容

  • 没有找到相关文章

最新更新