| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1471 人关注过本帖
标题:遇到了STACK-overflow怎么解决?
只看楼主 加入收藏
chuanglan
Rank: 2
等 级:论坛游民
威 望:2
帖 子:91
专家分:29
注 册:2012-8-14
结帖率:84.62%
收藏
已结贴  问题点数:20 回复次数:2 
遇到了STACK-overflow怎么解决?
程序代码:
#include<stdio.h>
int main()
{
   int A,B;
   long n,i;
   int f(int A,int B,int n);
   while(scanf("%d%d%ld",&A,&B,&n) !=EOF)
    while(A!=0&&B!=0&&n!=0)
     {
       printf("%d\n",f(A,B,n));
       scanf("%d%d%ld",&A,&B,&n);
     }
    return 0;
}

int f(int A,int B,int n)
   {
      int sum;
      if(n==1||n==2)
        sum = 1;
      else
       sum = (A*f(A,B,n-1)+B*f(A,B,n-2))%7;
      return sum;
   }

这是OJ http://acm.hdu.
提交是说是Stack--overflow,这个我没有遇到过,请问该怎么解决?
2012-08-20 18:19
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:14 
任何程序的栈空间都是有限的。一般大小在4M、8M这样子。

你的算法太朴实,没法完成题目要求的计算。栈溢出只是一个方面,你只是在超时之前就耗完了所有的栈空间而已。

重新思考,换个算法。

重剑无锋,大巧不工
2012-08-20 19:17
chuanglan
Rank: 2
等 级:论坛游民
威 望:2
帖 子:91
专家分:29
注 册:2012-8-14
收藏
得分:0 
嗯。。好类。。谢啦
2012-08-20 19:32
快速回复:遇到了STACK-overflow怎么解决?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037178 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved