Является ли пространственная сложность приведенной ниже программы правильной?
Я должен вычислить сложность пространства для этой функции, если мы видим в соответствии с размером стека, то это будет O(n), но в каждом рекурсивном вызове два массива потребляют дополнительное пространство, которое составляет 2n или порядка O(n)
СВОИ СОМНЕНИЯ
1)Когда мы вычисляем временную сложность для этой функции, процесс будет выглядеть следующим образом: при каждом рекурсивном вызове O(n) дополнительное пространство занимает два массива(я беру только порядок 2n ), а поскольку размер стека равен O(n), то пространственная сложность равна O(n^2)
2) что произойдет, если я заменю эти два массива 2d-массивом, то при каждом рекурсивном вызове O(n^2) будет занято дополнительное пространство, а поскольку размер стека равен O(n), то сложность пространства на этот раз будет O(n^3)
Примечание ничего особенного в этой функции нет только вычисление сложности пространства оставьте значение мусора так как я не освобождаю память после рекурсии
Что я уже пробовал:
testfun(n){ if(n==0) return; int *a=malloc(sizeof(int)*n); int *b=malloc(sizeof(int)*n); for(int i=0;i<n;i++) { a[i]=n+2*i; b[i]=n+3*i; } testfun(n-1); free(a); free(b); }
Обратите внимание, я освобождаю память через рекурсию
kavinderrana121
@OriginalGriff, пожалуйста, помогите, сэр