为何反转迭代顺序就不会栈溢出了?
2014-02-27 23:39
134 查看
def hanoi_recur(n,reverse=True): if n==1: return 1,1 possible=[] iter_range=range(n-1,0,-1) if reverse else range(1,n) for i in iter_range: _, min_v = hanoi_recur(n-i,reverse) possible.append((i,2*min_v+2**i-1)) return min(possible,key=lambda x:x[1])
如上所示,
hanoi_recur(10000,reverse=False)直接栈溢出
hanoi_recur(10000,reverse=True)不会. 感觉比较神奇.
相关文章推荐
- 面试题准备(01)-反转句子中单词的顺序
- 反转一句话(仅反转各单词的顺序)
- 剑指offer 01-06解答思路以及代码(顺序数组找特定数字,替换空格字符,链表反转输出,重建二叉树,两个栈实现队列效果,旋转数组最小元素)
- 字符串单词顺序反转
- Floyd算法 最外层 迭代顺序 关系
- 青少年为何有时不会换位思考
- 按Ctrl-d不会引发EOFError。为何????
- 不会内存溢出的Android Handler写法
- 字符串左旋转&&反转单词顺序&&Text Reverse&&句子的逆序
- 反转在整数字节的顺序
- 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转
- 反转单词顺序
- java算法实现"输入一个英文句子,反转句子中的单词顺序,但单词内字符的顺序不变"
- 不产生新的链表,请写一段函数将一个单向链表反转顺序
- 不使用(a+b)/2这种方式,求两个数的平均值(保证不会溢出)
- oracle迭代 并将节点按某个顺序排序
- 由Dapper QueryMultiple 返回数据的问题得出==》Dapper QueryMultiple并不会帮我们识别多个返回值的顺序
- 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转。
- 为何苹果不会成为一个手机公司?
- IntentService的用法,对比Service它会按顺序执行,不会像Service一样并发执行。