Java 这个带有for循环的递归调用的大O时间复杂度是多少
问题,当分析以下代码的时间复杂度时(不要考虑空间复杂度)。这是O(n)吗?递归调用计数是否为常量?我不确定,因为for循环中有递归调用Java 这个带有for循环的递归调用的大O时间复杂度是多少,java,algorithm,big-o,Java,Algorithm,Big O,问题,当分析以下代码的时间复杂度时(不要考虑空间复杂度)。这是O(n)吗?递归调用计数是否为常量?我不确定,因为for循环中有递归调用 public void printViews(View view) { if (view instanceof ViewGroup && ((ViewGroup)view).getChildCount() > 0) { ViewGroup viewGroup = ((ViewGroup)view);
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());
}
}
public void打印视图(视图){
if(视图组的视图实例&((视图组)视图).getChildCount()>0){
ViewGroup ViewGroup=((ViewGroup)视图);
int childCount=viewGroup.getChildCount();
for(int i=0;i
它是O(n)
您所做的是查看树上的DFS。
递归调用不是常量,但它是遍历树的一种方式
有关更多详细信息,请参阅链接:
它是O(n)。因为您只遍历了一次树层次结构。递归方法即使在for循环中,也用于遍历视图及其子体。如果您想说“这是O(n)”的话,您需要弄清楚n是什么。@AndyTurner感谢您的评论。n与子视图的数量相同。直到舒基指出,我才意识到,我只是在浏览一棵视图树。