【发布时间】:2015-11-21 20:48:06
【问题描述】:
我已经编写了这段代码,它在 Python 中以迭代和递归的方式实现了双阶乘;代码可以正常工作,但我对改进我的整体编程风格很感兴趣。代码如下:
def semif_r(n): #recursive implementation
if n == 0 or n == 1:
z = 1
else:
z= n * semif_r(n-2)
return z
def semif_i(n): #iterative implementation
N = 1
if n == 0 or n == 1:
return 1
elif n%2 == 1:
for i in range(0,n/2):
N = (2*i + 1)*N
VAL = N
return n*VAL
elif n%2 == 0:
for i in range(0,n/2):
N = (2*i+2)*N
VAL = N
return VAL
希望有经验的程序员能给我一些改进代码的反馈!
【问题讨论】:
-
这个问题可能适合Code Review,只要 (a) 您的代码按预期工作,(b) 您的代码是真实代码,而不是示例代码,并且 (c) 您的代码包含在问题的正文中。如果您希望通过同行评审来改进代码的各个方面,请将其发布在 Code Review 上。
-
我投票结束这个问题,因为它属于Code Review。
-
这个问题现在已经cross-posted on Code Review。
-
大型
n会发生什么,例如n == 2000?
标签: python recursion iteration