为什么这个程序只能算到11260呢?

wengzhong 2003-04-04 02:21:08
程序如下:
按说long double 可以到到小数点后15位呀!
为什么这个程序到11260,就停止运行了呢??

#include<iostream>
#include<iomanip>
using namespace std;
long double fn(long double a)
{
if(a==1)
{
return 1;
}
else
{
return fn(a-1)+1.0/a;
}
}
void main()
{
long double b;
cout<<"# Cards Overhang "<<endl;
while(cin>>b)
{
if(b==0)
{
cout<<setw(5)<<setprecision(0)<<0;
cout<<setw(10)<<setiosflags(ios::fixed)<<setprecision(3)<<0.0<<endl;
continue;
}
cout<<setw(5)<<setprecision(0)<<b;
cout<<setw(10)<<setiosflags(ios::fixed)<<setprecision(3)<<fn(b)*0.5<<endl;
}
}
...全文
39 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
myaniu 2003-04-04
  • 打赏
  • 举报
回复
我听别人说堆栈最多递归200多层!
wengzhong 2003-04-04
  • 打赏
  • 举报
回复
和精度没有关系吧
堆栈的自动分配,最大能分配多大的空间呢?/
Bandry 2003-04-04
  • 打赏
  • 举报
回复
精度问题
earthquake 2003-04-04
  • 打赏
  • 举报
回复
递归堆栈溢出了吧。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧