我已经阅读了很多Python手册,但无法弄清楚这一点。
函数中的两个局部变量会自行调用,而其中只有一个局部变量表现为“静态”。
这是代码段:
def sort_bubble(local_itera, difficulty):
#local_itera = itera[:]
sorted_count = 0
nrecursions = 0
for i in range(difficulty - 1):
val1 = local_itera[i]
val2 = local_itera[i+1]
if local_itera[i] == min(val1, val2):
sorted_count += 1
continue # skip sorted pairs
else: # swap
local_itera[i] = min(val1, val2)
local_itera[i+1] = max(val1, val2)
if not sorted_count == difficulty - 1: # recurse if not sorted
nrecursions += 1
sort_bubble(local_itera, difficulty)
虽然sorted_count
递增了,nrecursions
却没有递增,我想用它来计算递归调用的次数。
请注意,此目的仅用于 作为一个独立功能(这只是原型):
我在朝着以下方向思考。
(摘自Python手册)
def whats_on_the_telly(penguin=None):
if penguin is None:
penguin = []
penguin.append("property of the zoo")
return penguin
但这也是矫kill过正。
答案 0 :(得分:1)
问题似乎是,与sorted_count
不同,您没有在任何地方增加对函数的调用次数。要计算递归数,您需要适当地增加它。 [操作说明:问题已更新]
此外,您的nrecursions
将在每次函数调用期间重新初始化为0,因为您已将其放置在函数中。因此,您应该在函数外部将其初始化为0。
我认为,这是按如下所示增加它的正确位置。此外,您需要将变量设置为global
nrecursions = 0
def sort_bubble(local_itera, difficulty):
global nrecursions
# Function body
if not sorted_count == difficulty - 1: # recurse if not sorted
nrecursions += 1 # <--- added here
sort_bubble(local_itera, difficulty)