【发布时间】:2017-01-31 21:52:45
【问题描述】:
我正在尝试制作一个程序,它可以为我提供系列 1!+2/2!+3/3!.......n/n! 的总和! 这是我的代码。
#include "stdafx.h"
#include<conio.h>
#include <stdio.h>
#include <stdlib.h>
int n;
double sumseries(double sum, double count)
{
double fac = 1, i;
for (i = 1; i <= count; i++)
fac = fac*i;
sum += (count++ / fac);
if (count <= n)
sumseries(sum, count);
else {
printf("sum of series is:%lf", sum);
return sum;
}
}
int main()
{
printf("enter the limit");
scanf_s("%d", &n);
double z = sumseries(0,1);
printf("\n%lf",z);
system("pause");
}
现在,当我们从 sumseries() 函数打印 sum 时,会打印出正确的值。但在下一行,我们返回总和并将其保存在 main() 函数的 z 变量中。当我们尝试打印该值时,它会显示 -nan(ind)
我的问题不是如何解决这个问题或如何使这个程序工作。我要问的是在上面的代码中是什么导致了这个问题。为什么没有返回正确的值。
【问题讨论】:
-
将编译器的警告提高到更高级别。它会立即告诉你。您有递归,但您没有在整个链中执行
returns。或者在调试器中逐行运行代码,你会看到会发生什么。 -
我不知道双打有后缀增量。谁用它?
-
根据this SO answer,使用
double++反复加错。
标签: c++ visual-c++