Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+中收敛于数字e的级数+;_C++_Algorithm - Fatal编程技术网

C++ 在C+中收敛于数字e的级数+;

C++ 在C+中收敛于数字e的级数+;,c++,algorithm,C++,Algorithm,如何计算职级1+1/1!+1/2! + 1/3! +...+1/n!在C++中? 我有一个提纲: #include <iostream> using namespace std; int main() { int n, i, j, fat; float soma = 0.0; cin >> n; for (i = 1; i <= n; i++) { fat = 1; soma += 1 / f

如何计算职级1+1/1!+1/2! + 1/3! +...+1/n!在C++中? 我有一个提纲:

#include <iostream>
using namespace std;
int main()
{
    int n, i, j, fat;
    float soma = 0.0;
    cin >> n;
    for (i = 1; i <= n; i++)
    {

        fat = 1;
        soma += 1 / fat;
        for (j = 1; j <= n; j++)
        {
            fat *= j;
        }
    }
    cout << soma << endl;
    return 0;
}
#包括
使用名称空间std;
int main()
{
int n,i,j,fat;
浮体=0.0;
cin>>n;

对于(i=1;i,这里有一个整数除法:

soma += 1 / fat;
将其更改为:

soma += 1. / fat;
还要注意,当
n
变大时,您的实现非常容易受到整数溢出的影响

这是工作版本。还有两个错误:

int main()
{
    int n, i, j, fat;
    float soma = 1.0;   //  Change to 1.0
    cin >> n;
    for (i = 1; i <= n; i++)
    {

        fat = 1;
        for (j = 1; j <= i; j++)
        {
            fat *= j;
        }
        soma += 1. / fat;      //  Move this to after the loop.
    }
    cout << soma << endl;
    return 0;
}
intmain()
{
int n,i,j,fat;
float soma=1.0;//更改为1.0
cin>>n;

对于(i=1;i保持一个连续项,并将其添加到结果中:

double result = 1.0;
double term = 1.0;

for (unsigned int i = 1; i != N; ++i)
{
    term /= i;
    result += term;
}

return result;

您只需稍加修改即可计算任何
exp(x)

顺便说一句,您不必每次都重新计算整个阶乘,因为我们每次都在计算阶乘…如何使用大n,例如,n=1000?
n=12
在得到整数溢出之前,您可以使用的最大值。