有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

GetMax()方法的java递归关系

这个方法的递推关系是什么,我不明白为什么它被解为t(n)=t(n-1)+1?但是每次递归调用改变(增加)的位置是什么

  private static int getMaxRecursive(int[] arr,int pos) {
             if(pos == (arr.length-1)) {
                    return arr[pos];
             } else {           
                    return Math.max(arr[pos], getMaxRecursive(arr, pos+1));
             }
       }

共 (1) 个答案

  1. # 1 楼答案

    • T(n)是getMaxRecursive(arr,0)的时间
    • T(n-1)是getMaxRecursive(arr,1)的时间
    • T(1)是getMaxRecursive(arr,arr.length-1)的时间

    其中n是数组的长度

    换句话说,T(i)是长度为i的数组的方法的运行时间,该数组是arr的子数组,从索引arr.length-i开始,到索引arr.length-1结束

    所以

    T(n) = T(n-1) + the time of the Math.max() operation (which is constant) = T(n-1) + 1