Tôi có một hàm được gọi đệ quy và tôi muốn biết mức đệ quy hiện tại. Đoạn mã dưới đây cho thấy phương pháp mà tôi đang sử dụng để tính toán nó, nhưng nó không đưa ra kết quả mong đợi.Tìm mức độ gọi đệ quy trong python
Ví dụ: : Để tìm mức đệ quy cho một đường dẫn hệ thống:
import os
funccount = 0
def reccount(src):
global funccount
print "Function level of %s is %d" %(src, funccount)
def runrec(src):
global funccount
funccount = funccount + 1
lists = os.listdir(src)
if((len(lists) == 0)):
funccount = funccount - 1
reccount(src)
for x in lists:
srcname = os.path.join(src, x)
if((len(lists) - 1) == lists.index(x)):
if (not(os.path.isdir(srcname))):
funccount = funccount - 1
if os.path.isdir(srcname):
runrec(srcname)
runrec(C:\test)
Vấn đề: Cho một đường dẫn thư mục, in mức độ đệ quy cho thư mục
mục Cấu trúc là: Trong cấu trúc thư mục của tôi, tôi sẽ gọi function "reccount (Test)" (Hàm sẽ được gọi với đường dẫn tới MainFolder). Tôi muốn biết mức độ gọi lại đệ quy cho mỗi thư mục. (Thư mục chỉ)
Test:
|----------doc
|----------share
|----------doc
|----------file1
|----------bin
|----------common
|----------doc
|----------extras
|----------file2
Khi tôi gọi thủ tục, tôi nhận được kết quả sau:
Function level of C:\test is 1
Function level of C:\test\bin is 2
Function level of C:\test\bin\common is 3
Function level of C:\test\bin\common\doc is 3
Function level of C:\test\doc is 3
Function level of C:\test\extras is 3
Function level of C:\test\share is 4
Function level of C:\test\share\doc is 5
Như bạn có thể thấy, khi in kết quả cho bin/common/doc, nó in 3 thay vì của 4 và tất cả các kết quả tiếp theo đều sai
đếm Tại sao tiêu cực? – sarbjit