如何解决此代码“ 1/0!+ 1/1!+ 1/2!+ .... + 1 / n!”

时间:2019-08-18 12:32:53

标签: c++ visual-c++ c++14

因此,我正在尝试编写一个程序来计算1/0系列的值! + 1/1! + 1/2! + .. + 1 / n !.我认为这是一个很容易解决的问题。但是,1/0!也就是说,该系列的第一期为我带来了所有问题。请帮帮我。自两个月前开始学习C ++以来,我犯了一些愚蠢的错误,此后一直在努力解决各种问题。

#include <iostream>
using namespace std;

int fact(int j)
{
    int facto = 1;
    if (j == 0) {
        return facto;
    }
    else {
        for (int i = 2; i <= j; i++) {
            facto = facto * i;
        }
        return facto;
    }
}

int main()
{

    int n, p;
    float sum = 0, k;
    cout << "Enter the value of n: " << endl;
    cin >> n;
    for (int i = 0; i < n; i++) {
        p = fact(i);
        cout << p << endl;
        k = 1 / p;
        cout << k << endl;
        sum = sum + k;
    }
    cout << "Sum is: " << sum << endl;
    return 0;
}

我有2个问题:

1)当我输入0时,我得到0(即总和的值)作为输出(但是,我期望得到1),当我输入1时,它给出1作为输出(期望2作为输出)。请帮助我指出漏洞。

2)当我输入0时,它不会打印'p'和'k'的值,但是任何大于0的输入每次完成时都会显示'p'和'k'的值循环。为什么??

1 个答案:

答案 0 :(得分:0)

按以下方式更改循环

for(int i=0; i<=n; i++)
             ^^^^^

例如,或者将循环更改为“ do-while”循环

int i = 0;
do
{
    //...
} while ( i++ < n );

这句话

k = 1/p ;

更改为

k = 1.0f/p ;