Давайте решим, что с помощью рекурсии ...
ArrayList<Integer> al = new ArrayList<>();
void intToArray(int num){
if( num != 0){
int temp = num %10;
num /= 10;
intToArray(num);
al.add(temp);
}
}
Объяснение: Предположим, значение num = 12345.
Во время первого вызова функции temp содержит значение: 5 и значение num =1234. Он снова передается функции, теперь временное значение удержания: 4 и значение num = 123 ... эта функция вызывает себя, пока значение num не станет равным 0.
StackTrace:
temp - 5 | num - 1234
temp - 4 | num - 123
temp - 3 | num - 12
temp - 2 | num - 1
temp - 1 | num - 0
And then, It calls add method of ArrayList and value of temp is added to it, so value of list:
ArrayList - 1
ArrayList - 1,2
ArrayList - 1,2,3
ArrayList - 1,2,3,4
ArrayList - 1,2,3,4,5
Надеюсь, с помощью рекурсии у вас возникнут сомнения.