【发布时间】:2014-04-12 07:10:50
【问题描述】:
我的程序代码如下所示
#include <iostream>
#include <cmath>
using namespace std;
double pi (double);
int main()
{
cout << "Enter n to value of pi: "; double n; cin>>n;
cout << pi(n) << endl;
return 0;
}
double pi (double n)
{
if (n==1)
return 4*1;
else
return ( 4*(pow(-1,n+1)*(1/(2*n-1))) + pi(n-1) );
}
除了它在 C 中(我实际上只更改了 include 语句、scanf、printf)。
如果我输入 0.00001 或更少的 epsilon,程序会一直崩溃
其中 epsilon 表示(我只是在该方程中重新排列 epsilon 以找到 n,然后使用 n 作为递归参数)http://puu.sh/7ot1P.png
我认为这是因为它进行了太多的递归。有什么办法解决吗?
顺便说一句,当我在 unix 服务器上运行它时,错误是分段错误(核心转储)
【问题讨论】:
-
应该
n是int还是double? -
应该是双倍的,抱歉。我的代码修复了小细节,我的代码是 C 语言,而不是 C++。 “重复问题”对C有用吗?我不确定如何将他们的小代码段合并到我的 C 程序中。
-
@user3397709:您问题中的代码是 C++,而不是 C。
-
@user3397709 你为什么不发布你的代码?为什么要发布无关的 sn-p?