首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我找不到为什么会出现*异常:堆栈溢出

我找不到为什么会出现*异常:堆栈溢出
EN

Stack Overflow用户
提问于 2019-04-05 23:19:29
回答 1查看 69关注 0票数 3

我正在编写调用其他函数的函数。在我发表评论之前,一切都很好--A6 AGP(t)。当我尝试运行agp1时,它抛出*异常:堆栈溢出。

我已经尝试添加和删除括号,以便没有函数被反复调用,但仍然没有成功。

代码语言:javascript
复制
import Data.List
import System.IO

p = 1.50
dt= 0.050
at = 0.075
wMax = 20.00
da1 = 300.0
dcasa = 0.05
dSort = 1.50
dKafv = 0.50
aa1 = 250.0
acasa = 0.05
aKafv = 0.25
aSort = 1.00
v = 1200.0
l = 47490.0


--A1 AGL(t)
agl :: Float -> Float
agl a = a + 5

--A6 AGP(t)
agp :: Float -> Float
agp x = (agp (x-1) - ((at - agp (x-1)) / at)) * (atl (x-1) - at)

agp1 =  agp 2.0

--A7 ATL(t)
atl :: Float -> Float
atl x = (agl x - agl (x+1)) / agl (x)

--A10 DCAS(t)
dcas :: Float -> Float
dcas x = (l/v)*da1*((1.0-dcasa)**(dSort*(x - 1)))*dKafv*(((1 - ((1- 
         dcasa)**(dSort+1))) / dcasa) - 1)


--A11 ACAS(t)
acas :: Float -> Float
acas x = (l/v)*aa1*((1.0-acasa)**(aSort*(x - 1)))*aKafv*(((1 - ((1- 
          acasa)**(aSort+1))) / acasa) - 1)

--A12 Da(t)
da :: Float -> Float
da x = da1 * ((1.0 - dcasa) ** (dSort * (x - 1)))


--A13 Aa(t)
aa :: Float -> Float
aa x = aa1 * ((1.0 - acasa) ** (x - 1))
EN

回答 1

Stack Overflow用户

发布于 2019-04-06 02:19:50

您需要一些基本情况,在这种情况下,agp不会调用自身,因此计算结束。我的gues是你的函数需要像这样:

代码语言:javascript
复制
--A6 AGP(t)
agp :: Float -> Float
agp x
    | agp' > 0 = agp'
    | otherwise = 0
    where agp' = (agp (x-1) - ((at - agp (x-1)) / at)) * (atl (x-1) - at)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55538665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档