设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 4969|回复: 3
打印 上一主题 下一主题

递归发生栈溢出怎么解决?

[复制链接]

2

主题

0

好友

94

积分

注册会员

Rank: 2

跳转到指定楼层
楼主
发表于 2016-11-7 13:39:41 |只看该作者 |倒序浏览
  1. def radiationExposure(start, stop, step):
  2.     if start == stop:
  3.         return 0
  4.     elif step < 1:
  5.         return f(start) * step + radiationExposure(start + start, stop, step)
  6.    elif step >= 1:
  7.        return f(start) + radiationExposure(start + step, stop, step)
  8. def f(x):
  9.     import math
  10.     return 400*math.e**(math.log(0.5)/3.66 * x)
复制代码
当我的步长为0.1的时候就发生溢出了,这怎么办?
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2016-11-7 17:27:52 |只看该作者
这没办法,递归的深度是有限的,太多了就会堆栈溢出。
可以想办法改成循环。或者存储一些中间计算结果,分步计算
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

2

主题

0

好友

94

积分

注册会员

Rank: 2

板凳
发表于 2016-11-8 10:04:36 |只看该作者
crossin先生 发表于 2016-11-7 17:27
这没办法,递归的深度是有限的,太多了就会堆栈溢出。
可以想办法改成循环。或者存储一些中间计算结果,分 ...

好的我试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-4-25 21:44 , Processed in 0.026143 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部