Почему методы возвращают много значений вместо одного в каждом массиве? - PullRequest
0 голосов
/ 03 февраля 2019

У меня проблема с возвратом типа в Java.Программа предназначена для разложения целого числа 5 шиффр в массив без использования предопределенных методов только с классическим алгоритмом рекурсивным способом.Я написал код, и он хорошо работает с рекурсией, но когда я перехватываю новый массив из метода, он не возвращает одно значение в каждом случае, но возвращает от двух до 5 символов в одном случае.Чего я хочу добиться, так это:

12345 >> [1] [2] [3] [4] [5]

но мой алгоритм дал мне это:

12345 >> [0] [12] [123] [1234] [12345]

Я предполагаю, что проблема в возвращающем типе или в объявленииМетод.

Это мой код:

public class recursive {

  static int[] Decompose (int[] tab , int pos,int num) //pos for position
  {
    if (pos == 0) //if it reach the last element of the table it stop
    {
      return tab;
    } 
    else {
      tab[pos]=num;
      return Decompose(tab,pos-1,num/10); // if we didn't reach the end continue ...    
    }

  }

  public static void main(String[] args) {
    int []t = new int[5];

    int n=12345;//the number that i want to decompose
    int pos=4;//the indicator of table position

    t=Decompose(t,pos,n);

    for (int i = 0; i < t.length; i++) {
        System.out.println(t[i]);
    }
  }
}

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

Вы присваиваете массив фактическому номеру каждый раз, поэтому вы получаете целое число минус один в каждой итерации.Вам следует изменить назначение вкладки на:

tab[pos] = num % 10;

Также позиция должна достичь индекса 0, поэтому измените проверку на:

if (pos < 0)
0 голосов
/ 03 февраля 2019

Похоже, что вы хотите сохранить однозначное число в каждой позиции массива, поэтому вы должны использовать оператор % для получения последней цифры:

...
tab[pos]=num%10;
return Decompose(tab,pos-1,num/10);
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...