【问题标题】:Recurrence Relation of GetMax() MethodGetMax() 方法的递归关系
【发布时间】:2018-11-20 18:56:25
【问题描述】:

这种方法的递归关系是什么,我不明白为什么它被解决为 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));
             }
       }

【问题讨论】:

    标签: java arrays algorithm recursion recurrence


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-28
      • 1970-01-01
      • 1970-01-01
      • 2019-10-18
      • 1970-01-01
      相关资源
      最近更新 更多