Мы имеем следующий метод Java:Стоимость метода Java с несколькими рекурсии
static void comb(int[] a, int i, int max) {
if(i < 0) {
for(int h = 0; h < a.length; h++)
System.out.print((char)(’a’+a[h]));
System.out.print("\n");
return;
}
for(int v = max; v >= i; v--) {
a[i] = v;
comb(a, i-1, v-1);
}
}
static void comb(int[] a, int n) { // a.length <= n
comb(a, a.length-1, n - 1);
return;
}
Я должен определить асимптотическую оценку стоимости алгоритма comb(int[],int)
в зависимости от размера входных данных. Поскольку я только начинаю с этого типа упражнений, я не могу понять, если в этом случае размер ввода означает размер массива a
или какой-либо другой параметр метода. Как только вы определили размер ввода, как перейти к определению стоимости множественной рекурсии?
Пожалуйста, вы можете указать мне уравнение повторения, которое определяет стоимость?
Если это назначение, это должно быть частью вопроса, что использовать в качестве входного размера. Или вы можете использовать оба ваших параметра одновременно. – talex
Рисунок дерева рекурсии поможет –
Печать очень дорогое, если вы печатаете файл в 100 раз дороже, чем остальная часть вашего кода, но если вы пишете на консоль DOS, это может быть на 10 000 раз дороже. Если у вас есть O (n^2) algo, это может быть дороже, чем печать, но ваша проблема должна быть действительно большой. –