someFunction
не читает и не записывает в параметр num1
.Таким образом, someFunction
по определению не может повлиять на массив num1
, переданный ему из main
.
Это будет иметь место, независимо от того, есть ли параметры массива в вашемвыбранный язык передавался по ссылке или по значению.
Когда я отслеживаю алгоритм, при втором вызове num1 [0] равен 999 и будет оставаться до тех пор, пока я не вернусь к основному.
Я подозреваю, что вас смущает тот факт, что имя вашей переменной в main
и имя параметра в someFunction
совпадают.Вы видите num1
как установленное для определенного значения - но это не main
'num1
- то есть someFunction
' num1
.Чтобы сделать это более понятным при отладке, измените имя одного из них (либо имя переменной в main
, либо имя параметра в someFunction
) вместо bob
.
С точки зрения результата, который выя подозреваю, что, возможно, вместо:
public static void someFunction(int[] num1, int count){
if (count!= 0){
int[] temp = {999};
someFunction(temp, count-1);
}
}
вы могли бы написать:
public static void someFunction(int[] num1, int count){
if (count!= 0){
num1[0] = 999;
someFunction(num1, count-1);
}
}
Обратите внимание, в частности, что (с моим предложенным изменением) someFunction
будет записывать в параметр num1
(передаваемый параметр, а не новый массив temp
), поэтому массив в main
будет отражать это изменение.