相关疑难解决方法(0)

什么是尾递归?

在开始学习lisp时,我遇到了尾递归这个术语.这究竟是什么意思?

language-agnostic algorithm recursion functional-programming tail-recursion

1602
推荐指数
27
解决办法
42万
查看次数

与Project Euler的速度比较:C vs Python vs Erlang vs Haskell

我已经采取了问题#12项目欧拉作为编程练习和我的(肯定不是最优的)实现在C,Python和Erlang和Haskell的比较.为了获得更高的执行时间,我搜索第一个三角形数字,其中有超过1000个除数而不是原始问题中所述的500.

结果如下:

C:

lorenzo@enzo:~/erlang$ gcc -lm -o euler12.bin euler12.c
lorenzo@enzo:~/erlang$ time ./euler12.bin
842161320

real    0m11.074s
user    0m11.070s
sys 0m0.000s
Run Code Online (Sandbox Code Playgroud)

蟒蛇:

lorenzo@enzo:~/erlang$ time ./euler12.py 
842161320

real    1m16.632s
user    1m16.370s
sys 0m0.250s
Run Code Online (Sandbox Code Playgroud)

Python与PyPy:

lorenzo@enzo:~/Downloads/pypy-c-jit-43780-b590cf6de419-linux64/bin$ time ./pypy /home/lorenzo/erlang/euler12.py 
842161320

real    0m13.082s
user    0m13.050s
sys 0m0.020s
Run Code Online (Sandbox Code Playgroud)

二郎:

lorenzo@enzo:~/erlang$ erlc euler12.erl 
lorenzo@enzo:~/erlang$ time erl -s euler12 solve
Erlang R13B03 (erts-5.7.4) [source] [64-bit] [smp:4:4] [rq:4] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.7.4  (abort with ^G)
1> 842161320

real    0m48.259s
user    0m48.070s
sys 0m0.020s
Run Code Online (Sandbox Code Playgroud)

哈斯克尔: …

c python erlang performance haskell

645
推荐指数
14
解决办法
13万
查看次数

Python中的最大递归深度是多少,以及如何增加它?

我在这里有这个尾递归函数:

def recursiveFunction(n, sum):
    if n < 1:
        return sum
    else:
        return recursiveFunction(n-1, sum+n)

c = 998
print(recursiveFunction(c, 0))
Run Code Online (Sandbox Code Playgroud)

它可以工作到n = 997,然后它就会中断并吐出"比较时超出的最大递归深度" RuntimeError.这只是一个堆栈溢出?有办法解决它吗?

python recursion

357
推荐指数
13
解决办法
40万
查看次数

Python优化尾递归吗?

我有以下代码失败,出现以下错误:

RuntimeError:超出最大递归深度

我试图重写它以允许尾递归优化(TCO).我相信如果发生TCO,这段代码应该是成功的.

def trisum(n, csum):
    if n == 0:
        return csum
    else:
        return trisum(n - 1, csum + n)

print(trisum(1000, 0))
Run Code Online (Sandbox Code Playgroud)

我是否应该断定Python不执行任何类型的TCO,或者我只是需要以不同的方式定义它?

python stack-overflow recursion stack tail-recursion

182
推荐指数
5
解决办法
6万
查看次数

因子在Python中的功能

我如何在Python中计算整数的阶乘?

python

121
推荐指数
8
解决办法
44万
查看次数

有一个Python缓存库吗?

我正在寻找一个Python缓存库,但到目前为止找不到任何东西.我需要一个dict类似于简单的界面,我可以设置密钥及其过期,并让它们重新缓存.类似的东西:

cache.get(myfunction, duration=300)
Run Code Online (Sandbox Code Playgroud)

如果它存在,它将从缓存中提供该项目,或者如果它没有或已经过期,则调用该函数并存储它.有谁知道这样的事情?

python caching

109
推荐指数
9
解决办法
10万
查看次数

什么是蹦床功能?

在最近的工作讨论中,有人提到了蹦床功能.

我已经阅读了维基百科的描述.这足以给出功能的一般概念,但我想要更具体的东西.

你有一个简单的代码片段来说明蹦床吗?

c language-agnostic programming-languages trampolines

89
推荐指数
5
解决办法
3万
查看次数

什么是"未知软件异常(0xc00000fd)"错误以及如何避免它?

我创建了一个名为code_2的AHK脚本,将其编译并放入我的Startup文件夹中,这样每次打开计算机时它都会自动开始运行.

该脚本会检查网站是否有新的更新,每当检测到网站上的更新时,它都会使用UrlDownloadToFile下载这些更新.

起初脚本似乎工作正常,但最近我的脚本运行大约15分钟后,我开始从我的计算机收到以下消息:

C:\ Documents and Settings\Administrator\???????\???\??\code_2.exe:code_2.exe - ??????

???????? 未知的软件异常(0xc00000fd)??? 0x7c92eddc?

?? [??] ????

?? [??] ??????

知道这条消息是什么意思吗?(对不起,这里的中国人,但我认为,如果你知道它的数量这条消息,你应该熟悉的内容.)

无论如何,这是翻译的消息:

C:\ Documents and Settings\Administrator\Start Menu\Programs\Startup\code_2.exe:code_2.exe - 应用程序错误

在未知软件异常(0xc00000fd)发生在位置0x7c92eddc应用.

单击OK以终止程序
单击CANCEL以调试程序

windows winapi exception

7
推荐指数
1
解决办法
3万
查看次数

Python递归限制与堆栈大小?

我理解在递归中如何在堆栈上的每个递归调用堆栈; 如果超出堆栈限制,则会出现堆栈溢出.那么,为什么Python的getrecursionlimit()返回一个数字 - 最大深度的递归调用?它不依赖于我在递归函数中的作用吗?或者以某种方式将变量保存在除堆栈之外的其他位置?它是如何工作的?

python recursion stack

2
推荐指数
1
解决办法
368
查看次数

如何找到最近的斐波那契数列编号?

我的下一步是,如果输入不在斐波那契数列中,则程序必须给出一个输出,该数字的序列中的数字最接近输入。我不知道如何进行,有人可以帮助我吗?

def fibs():
    a,b = 0,1
    yield a
    yield b
    while True:
        a,b = b,a+b
        yield b

n = int(input("please, enter a number: "))
for fib in fibs():
    if n == fib:
        print("Yes! Your number is a Fibonacci number!")
        break
    if fib > n:
        print("No! Your number is not a Fibonacci number!")
        break
Run Code Online (Sandbox Code Playgroud)

python fibonacci

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