Рекуррентное отношение метода GetMax () - PullRequest
0 голосов
/ 20 ноября 2018

какова будет рекуррентная связь этого метода, я не понимаю, почему она решается как 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 голосов
/ 20 ноября 2018
  • 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
...