「式」の深さ、つまり、ネストされたタプルのレイヤー数を見つけるために再帰を使用しようとしています。たとえば、
depth(('+', ('expt', 'x', 2), ('expt', 'y', 2))) => 2
depth(('/', ('expt', 'x', 5), ('expt', ('-', ('expt', 'x', 2), 1), ('/', 5, 2)))) => 4
基本的に、各要素がタプルのインスタンスであるかどうかを (アウトからインへと) チェックし、そうであれば、深さ関数を再帰的に呼び出す必要があると考えました。しかし、再帰呼び出しのどのセットが最大の深さを持っているかを把握する方法を見つける必要があり、それが私が立ち往生している場所です。これが私がこれまでに持っているものです:
def depth3(expr):
if not isinstance(expr, tuple):
return 0
else:
for x in range(0, len(expr)):
# But this doesn't take into account a search for max depth
count += 1 + depth(expr[x])
return count
これにアプローチする良い方法について考えていますか?