devguy:
質問、次のコードの時間の複雑さを分析する(スペースの複雑さを気にしません)。これはO(n)のだろうか?再帰呼び出し定数としてカウント?ため、私は、forループ内の再帰呼び出しのかわかりません。
public void printViews(View view) {
if (view instanceof ViewGroup && ((ViewGroup)view).getChildCount() > 0) {
ViewGroup viewGroup = ((ViewGroup)view);
int childCount = viewGroup.getChildCount();
for (int i = 0; i < childCount; i++) {
Log.d("Test", viewGroup.getChildAt(i).getClass().getSimpleName());
if (viewGroup.getChildAt(i) instanceof ViewGroup)
printViews(viewGroup.getChildAt(i)); //recursion
}
} else {
Log.d("Test", view.getClass().getSimpleName());
}
}
SA:
これはO(N)です。
あなたがやっていることはビューツリー上のDFSです。再帰呼び出しは一定ではないが、それは、ツリーをトラバースする方法です。
:詳細は、リンクを参照https://en.wikipedia.org/wiki/Depth-first_searchを