#include <iostream>
using namespace std;
float Pie(int n,float sum,float sign){
if (((n+1)/2)%2==0) //for even terms n sign is -1 and vice versa
sign=-1.0;
else
sign=1.0;
if (n==1)
return sum+1;
sum=sum+((sign*1.0/n));
return Pie(n-2,sum,sign);
}
int main(){
int n;
cout<<"enter the value of n : ";//n is always an odd number
cin>>n;
float sum=0.0;
float sign;
cout<<"value of pi is "<<4*Pie(n,sum,sign);
}
答案 0 :(得分:0)
创建一个提供初始值的Pie
重载:
float Pie(int n) { return Pie(n, 0, 0); }
答案 1 :(得分:0)
您可以制作一个Pie
的重载版本,它只需一个数字并调用递归版本。
您的递归版本非常复杂。它可以简化为:
float Pie(int i, int n, float sign){
if ( i > n )
{
return 0;
}
return sign*1.0/i + Pie(i+2, n, -sign);
}
,非递归版本可以是:
float Pie(int n)
{
return Pie(1, n, 1.0);
}
答案 2 :(得分:0)
所需的功能如下:
float Pie(int n) { return (n == 0) ? 0 : (n % 2 ? 1 : -1) * 1.0 / n + Pie(n - 2); }
那么您的主要功能将是:
int main() {
int n;
cout << "enter the value of n : ";
cin >> n;
cout << "value of pi is " << 4 * Pie(n);
}