| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 581 人关注过本帖
标题:请教高手堆栈溢出的问题。感激不尽!
只看楼主 加入收藏
无云
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-7-16
收藏
 问题点数:0 回复次数:2 
请教高手堆栈溢出的问题。感激不尽!

我编了一个计算的小程序,其中包含两个自定义的函数过程

Dim alfa, beta, gama Function FE2n(al, be, n As Integer) c5 = Log((alfa + Sqr(alfa ^ 2 + beta ^ 2)) / (1 + Sqr(1 + beta ^ 2))) FE2n(al, be, n) = be * c5 * M2n(n) End Function Function M2n(n As Integer) c1 = 1 / (1 + beta ^ 2) c2 = beta ^ 2 / (1 + beta ^ 2) c3 = alfa ^ 2 / (alfa ^ 2 + beta ^ 2) c4 = beta ^ 2 / (alfa ^ 2 + beta ^ 2) c5 = Log((alfa + Sqr(alfa ^ 2 + beta ^ 2)) / (1 + Sqr(1 + beta ^ 2))) If n = 0 Then M2n = 1 ElseIf n = 1 Then M2n = (Sqr(c1) ^ 3 - Sqr(c2) ^ 3) / (2 * beta ^ 2 * c5) ElseIf n = 2 Then M2n = (Sqr(c1) ^ 3 * (1 + 3 * c2 / 2 + 15 * c2 ^ 2 / 2) - Sqr(c3) ^ 3 * (1 + 3 * c4 / 2 + 15 * c4 ^ 2 / 2)) / (12 * beta ^ 4 * c5) ElseIf n = 3 Then X1 = 1 + 3 * c2 / 2 + 15 * c2 ^ 2 / 8 - 35 * c2 ^ 3 / 4 + 315 * c2 ^ 4 / 8 X2 = 1 + 3 * c4 / 2 + 15 * c4 ^ 2 / 8 - 35 * c4 ^ 3 / 4 + 315 * c4 ^ 4 / 8 M2n = (Sqr(c1) ^ 3 * X1 - Sqr(c3) ^ 3 * X2) / (30 * beta ^ 6 * c5) End If End Function

为什么程序反复的在这两个函数过程之间运行,以至最后堆栈溢出。确切的说就是程序根本就不运行绿色的那句,到了绿色那行得上一句调用完函数过程M2n之后就又回到了Function FE2n(al, be, n As Integer)这一句,有没有那位高手知道,麻烦帮一下忙!

感激不尽

搜索更多相关主题的帖子: 堆栈 感激不尽 
2005-07-16 10:22
loveve
Rank: 4
等 级:业余侠客
威 望:1
帖 子:452
专家分:213
注 册:2005-4-11
收藏
得分:0 
以下是引用无云在2005-7-16 10:22:56的发言:

我编了一个计算的小程序,其中包含两个自定义的函数过程

Dim alfa, beta, gama Function FE2n(al, be, n As Integer) c5 = Log((alfa + Sqr(alfa ^ 2 + beta ^ 2)) / (1 + Sqr(1 + beta ^ 2))) FE2n(al, be, n) = be * c5 * M2n(n) End Function

为什么程序反复的在这两个函数过程之间运行,以至最后堆栈溢出。确切的说就是程序根本就不运行绿色的那句,到了绿色那行得上一句调用完函数过程M2n之后就又回到了Function FE2n(al, be, n As Integer)这一句,有没有那位高手知道,麻烦帮一下忙!

感激不尽

把这句改了试试,我想是它有问题,不过我没有试,你自己试吧,不知道参不对. FE2n(al, be, n) = be * c5 * M2n(n) 改为 FE2n = be * c5 * M2n(n) 还有我想提醒你一点的是,你是声明有问题,比如A、B两个都是INTEGER的,不能这样写啊 dim a,b as inetger 这样只是写义了B,没有A。


五月的雪
2005-07-18 14:28
无云
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-7-16
收藏
得分:0 
谢谢!
FE2n(al, be, n) = be * c5 * M2n(n)
改为 FE2n = be * c5 * M2n(n)是正确的。对于变量声明很谢谢你的细心与提醒。
2005-07-18 15:42
快速回复:请教高手堆栈溢出的问题。感激不尽!
数据加载中...
 
   



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

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