我有以下简单的代码来计算n次谐波数。无论我尝试什么,我都会在输出中保持“inf”值。即使我的所有变量都是双倍的,这怎么可能呢?
#include <cstdlib>
#include <iostream>
using namespace std;
double harmonic(double n){
double h = 0.0;
while(n >= 0){
h = h + (1.0/n);
n = n-1.0;
}
return(h);
}
int main(int argc, char** argv) {
double n;
cout << "enter an integer: ";
cin >> n;
cout << "The " << n << "th harmonic number is: ";
cout << harmonic(n) << endl;
return 0;
}
答案 0 :(得分:3)
想一想:
while(n >= 0){
h = h + (1.0/n);
n = n-1.0;
}
说我通过了n = 0.0
。循环将执行,但是n = 0
因此你正在执行除零。
答案 1 :(得分:1)
inf
是一个特殊的浮点值,例如,从零除以产生。后者确实发生在你的程序中:当n
达到零时,你的循环仍然继续,你试图将1.0
除以零。
将您的循环更改为while (n>0)
。