我正在用python编写分支定界算法,并试图有效地显示进度。该算法使用递归,我想不出任何方法进行迭代。我想知道是否有一个类似tqdm的递归函数模块,或者至少是一种实现带有递归函数的进度条的方法?例如,如果我使用tqdm模块在python中编写迭代阶乘函数,则可以执行以下操作:
import tqdm
def factorial(n):
end_product = 1
for i in tqdm(range(1, n)):
end_product *= i
return end_product
我将如何在这样的递归函数上实现进度条:
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)
progress_bar(factorial(1000))
一种解决方案是使用total=
参数初始化进度条,然后在每次递归调用中都调用.update()
方法。
仅此行:
from time import sleep
from tqdm import tqdm
def factorial(n, bar):
bar.update(1)
sleep(0.01) # slow-down things a little bit
if n == 1:
return 1
else:
return n * factorial(n-1, bar)
n = 500
bar = tqdm(total=n)
factorial(n, bar=bar)