GetMax()方法的递归关系

时间:2018-11-20 18:56:25

标签: java arrays algorithm recursion recurrence

此方法的递归关系是什么,我不明白为什么将其求解为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 个答案:

答案 0 :(得分:2)

  • 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