如何修复“e = 1 1/1的代码! 1/2! 1/3! …… 1/n! “?

前端之家收集整理的这篇文章主要介绍了如何修复“e = 1 1/1的代码! 1/2! 1/3! …… 1/n! “?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这就是我想出的:
  1. #include <stdio.h>
  2.  
  3. int main (void)
  4. {
  5. int n,i,j;
  6. float e = 1.0,nFact = 1.0;
  7.  
  8. printf ("please enter the number");
  9. scanf ("%d",&n);
  10.  
  11. for (i = 1; i <= n ; i++)
  12. {
  13. for (j = 1; j <= i; j++)
  14. {
  15. nFact *= j;
  16. }
  17. e = e + (1.0 / nFact);
  18. }
  19.  
  20. printf ("The value of 'e' is : %f",e);
  21. return 0;
  22. }

这是我从这段代码中得到的.
输入:3
产量:2.58333(接近2.6666 …)

但是对于n = 3,e应该给出2.6666 ..作为值.

我在这里做错了吗?如何获得正确的输出

解决方法

你不必要地在每次迭代中计算阶乘.只需用nFact * = i;替换内部循环.
  1. #include<stdio.h>
  2.  
  3. int main (void)
  4. {
  5. int n,j;
  6. float e=1.0,nFact=1;
  7.  
  8. printf("please enter the number");
  9. scanf("%d",&n);
  10.  
  11. for( i =1; i<= n ; i++)
  12. {
  13. nFact*=i;
  14. e = e + (1.0/ nFact);
  15. }
  16.  
  17. printf("The value of 'e' is : %f",e);
  18.  
  19. return 0;
  20. }

猜你在找的C&C++相关文章