因此,我正在尝试编写一个程序来计算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'的值循环。为什么??
答案 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 ;