此方法的递归关系是什么,我不明白为什么将其求解为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));
}
}
答案 0 :(得分:2)
getMaxRecursive(arr,0)
的时间。getMaxRecursive(arr,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