Crossin的编程教室

标题: 递归发生栈溢出怎么解决? [打印本页]

作者: exchen    时间: 2016-11-7 13:39
标题: 递归发生栈溢出怎么解决?
  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的时候就发生溢出了,这怎么办?

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

好的我试试




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5