c语言求调和数列前n项和以及遇到的经典bug
代码如下:
#include <stdio.h> int main() { // author:m-yb // 2019-08-29 // devc 格式化:ctrl shift A // 1 - 1/2 + 1/3 ... - 1/100 int i; int flag = -1; float result = 0; for (i=1; i<=100; i++) { flag = -flag; result = result + flag / i; } printf("%f", result); return 0; }
以上代码不会算出合理的值, 有个bug大家猜猜为啥?
下面是正确的代码:
#include <stdio.h> int main() { // author:m-yb // 2019-08-29 // devc 格式化:ctrl shift A // 1 - 1/2 + 1/3 ... - 1/100 int i; float flag = -1; float result = 0; for (i=1; i<=100; i++) { flag = -flag; result = result + flag / i; } printf("%f", result); return 0; }
完~