|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
输入5时结果正确,输入100时结果就变成0.000000,求大佬帮帮忙看看哪里有问题
π/2=(2×2)(4×4)(6×6)…[(2n)×(2n))] / (1×3)(3×5)(5×7)…[(2n−1)×(2n+1)]
注意:
(1)n均为int型,求π时相关变量用double型。程序要避免计算结果溢出。
(2)用printf函数输出时,使用“%7.5f”格式符输出。
____________________________________________________________
#include<stdio.h>
long long int upre(int n)
{
long long int sum=((2*n)*(2*n));
if(n>1)
{
sum*=upre(n-1);
}
return sum;
}
long long int dnre(int n)
{
long long int sum=((2*n-1)*(2*n+1));
if(n>1)
{
sum*=dnre(n-1);
}
return sum;
}
int main(void)
{
int n;
double pai;
printf("please input...\n");
scanf("%d",&n);
pai=2.0*((double)upre(n))/((double)dnre(n));
printf("%7.5f\n",pai);
return 0;
}
________________________________________________________________
注:数学知识
(a * b) / (c * d) = (a / c) * (b / d)
- #include <stdio.h>
- double pi(int n){
- if(n == 1) return ((4.*n*n) / ((2.*n-1) * (2.*n+1)));
- return ((4.*n*n) / ((2.*n-1) * (2.*n+1))) * pi(n - 1);
- }
- int main(void){
- printf("%lf", pi(100)*2);
- return 0;
- }
复制代码
|
|