Переполнение стека при использовании рекурсии для транслятора морзе-кода - PullRequest
0 голосов
/ 21 марта 2020

Я пытался настроить переводчик, используя двоичное дерево для настройки структуры морзе. Я последовательно получаю ошибку переполнения стека при повторном выполнении метода

private String decode(String pCode, BinaryTree<String> pTree)
    {
        int loop1 = 0;
        int loop2 = 0;
        BinaryTree<String> tree = morsetree;
        if (!pCode.isEmpty())
        {
            if (loop2 <= pCode.length())
            {
                while (pCode.substring(loop, loop+1) == " ")
                {
                    loop2++;
                }
            }
            if (loop2 > 5)
            {
                return null;
            }
            for (int i=0;i<loop2;i++)
            {
                if (pCode.substring(i, i+1) == "-")
                {
                    tree = tree.getRightTree();
                }
                else
                {
                    tree = tree.getLeftTree();
                }
            }
            System.out.println(tree.getContent());
            return getLetter(pCode.substring(loop2, pCode.length())
                                                           ,morsetree);
        }
        return null;
    }

1 Ответ

0 голосов
/ 23 марта 2020

Не прочитал весь код, но одна эта часть кажется проблематичной c.

while (pCode.substring(loop, loop+1) == " ")
            {
                loop2++;
            }

Где был определен «цикл»? Как вы уверены, что пока l oop заканчивается? Кажется, что условие не даст другого результата после того, как l oop выполнит

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...