ты вызываешь рекусривно SumOfArrayElements, ты туда кроме массива ничего не передаешь, следовательно туда ВСЕГДА будет по умолчанию index 0 передаваться
а с чего ты думаешь что метод который вызовет сам себя должен знать что у него есть переменная result с каким-то значением?? каким хуем оно должно так быть??? ЭЛЕМЕНТАРНАЯ ЛОГИКА