鱼C论坛

 找回密码
 立即注册
查看: 647|回复: 8

[已解决]利用以下关系求pai

[复制链接]
发表于 2022-3-24 11:57:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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;
}
________________________________________________________________

最佳答案
2022-3-24 13:46:09
注:数学知识
(a * b) / (c * d) = (a / c) * (b / d)
  1. #include <stdio.h>

  2. double pi(int n){
  3.         if(n == 1) return ((4.*n*n) / ((2.*n-1) * (2.*n+1)));
  4.         return ((4.*n*n) / ((2.*n-1) * (2.*n+1))) * pi(n - 1);
  5. }

  6. int main(void){
  7.         printf("%lf", pi(100)*2);
  8.         return 0;
  9. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-3-24 12:02:26 | 显示全部楼层
开始的关系最后应该是(2*n-1)*(2*n+1),打错了不好意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-24 13:10:00 From FishC Mobile | 显示全部楼层
注意你的公式分子,(2×2)(4×4)(6×6)…[(2n)×(2n))]
= 4*16*36......4*n*n
不清楚你的公式是否正确,但问题在于 n = 100 时,早就溢出 long long 了。数值太大了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-24 13:46:09 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
注:数学知识
(a * b) / (c * d) = (a / c) * (b / d)
  1. #include <stdio.h>

  2. double pi(int n){
  3.         if(n == 1) return ((4.*n*n) / ((2.*n-1) * (2.*n+1)));
  4.         return ((4.*n*n) / ((2.*n-1) * (2.*n+1))) * pi(n - 1);
  5. }

  6. int main(void){
  7.         printf("%lf", pi(100)*2);
  8.         return 0;
  9. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-24 14:26:14 | 显示全部楼层
傻眼貓咪 发表于 2022-3-24 13:10
注意你的公式分子,(2×2)(4×4)(6×6)…[(2n)×(2n))]
= 4*16*36......4*n*n
不清楚你的公式是否正确, ...

谢谢啊,公式没问题,但你说的很有道理
顺便问一下,怎么发图片啊,一直让我在相册选图,但什么也没有,可能看图更清晰一些
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-24 14:28:15 From FishC Mobile | 显示全部楼层
先上传图想发的图,然后点取图片便可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-24 14:34:33 | 显示全部楼层
傻眼貓咪 发表于 2022-3-24 14:28
先上传图想发的图,然后点取图片便可

谢谢啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-24 14:42:10 | 显示全部楼层
傻眼貓咪 发表于 2022-3-24 13:46
注:数学知识
(a * b) / (c * d) = (a / c) * (b / d)

我懂你的意思了,非常感谢啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-24 14:50:25 From FishC Mobile | 显示全部楼层
天天下雨! 发表于 2022-3-24 14:42
我懂你的意思了,非常感谢啊

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-19 18:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表