forループで、この再帰呼び出しのビッグ-Oタイムの複雑さとは何ですか

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を

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=230329&siteId=1