python初心者です.
python
1T = "aaannn$" 2SA = suffixA(T) 3LCP = lcpA(T, SA) 4LCPstar = StarA(LCP)
このようにして与えたTに対して求めたLCPstarを最終的に表示します(表示部分までは載せていません).
この時関数StarAの中のsptという関数が上の与えたTの場合何回呼び出されるかを数えたいです.
関数はこのように別で定義しています.
python
1def StarA(LCP): 2 lcpstr={} 3 v, lcpstr=spt(0,len(LCP)-1, LCP, lcpstr) 4 return lcpstr
いくつか方法を調べてみたのですが.
例えばリンク内容
のグローバル変数を使った場合
python
1g = 0 2def spt(): 3 global g 4 g += 1 5 print(g) 6
のようになると思うのですが,これをどこに置くのが良いのかわかりません.よろしくお願いいたします.
追記
python
1 2def spt(L,R,LCP,lcpstar,cnt=[0]): 3 cnt[0] += 1 4 print(str(cnt[0]) + "回目の呼び出し") 5 if R-L > 1: 6 M = int((L+R)/2) 7 vL, lcpstar = spt(L, M, LCP, lcpstar) 8 vR, lcpstar = spt(M, R, LCP, lcpstar) 9 v = min(vL, vR) 10 elif R-L == 1: 11 v = LCP[L] 12 13 lcpstar[tuple([L,R])] = v 14 lcpstar[tuple([R,L])] = v 15 return v, lcpstar
上から2行目と3行目を追加したらこのように数えられているような気がするのですが,更新がされず
1回目に実行すると
1回目の呼び出し
2回目の呼び出し
3回目の呼び出し
4回目の呼び出し
5回目の呼び出し
6回目の呼び出し
7回目の呼び出し
8回目の呼び出し
9回目の呼び出し
10回目の呼び出し
11回目の呼び出し
2回目に実行すると
12回目の呼び出し
13回目の呼び出し
14回目の呼び出し
15回目の呼び出し
16回目の呼び出し
17回目の呼び出し
18回目の呼び出し
19回目の呼び出し
20回目の呼び出し
21回目の呼び出し
22回目の呼び出し
カウントが更新されず,続きからになります.どのように直したらいいですが?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/15 05:37 編集
2021/06/15 07:47
2021/06/15 09:22