小编Joe*_*Joe的帖子

为什么尾递归优化比Python中的正常递归更快?

虽然我知道尾部递归优化是非Pythonic的,但我想到了一个快速入侵这里的问题,一旦我准备发布就删除了.

由于1000个堆栈限制,深度递归算法在Python中不可用.但有时通过解决方案对初步想法很有帮助.由于函数是Python中的第一类,我使用返回有效函数和下一个值.然后循环调用该进程,直到完成单个调用.我敢肯定这不是新的.

我发现有趣的是,我期望来回传递函数的额外开销使得这比正常递归慢.在我的粗略测试期间,我发现它需要30-50%的正常递归时间.(允许LONG递归的额外好处.)

这是我正在运行的代码:

from contextlib import contextmanager
import time

# Timing code from StackOverflow most likely.
@contextmanager
def time_block(label):
    start = time.clock()
    try:
        yield
    finally:
        end = time.clock()
        print ('{} : {}'.format(label, end - start))


# Purely Recursive Function
def find_zero(num):
    if num == 0:
        return num
    return find_zero(num - 1)


# Function that returns tuple of [method], [call value]
def find_zero_tail(num):
    if num == 0:
        return None, num
    return find_zero_tail, num - 1


# Iterative recurser
def tail_optimize(method, …
Run Code Online (Sandbox Code Playgroud)

python recursion performance benchmarking tail-recursion

15
推荐指数
1
解决办法
2053
查看次数

如何调试Enyo App WebOS 3.0?

我对WebOS3.0(也在Mojo中)很不满意.现在我正在开发掌上电脑应用开发工具.我想知道如何调试enyo应用程序?

webos enyo

5
推荐指数
1
解决办法
1474
查看次数