Как преобразовать итерационный метод в рекурсивный метод (Java) - PullRequest
0 голосов
/ 14 июля 2011

Я сам прорабатываю курс Java, но у меня нет ответов ни на одну из проблем.Эта проблема из первого блока, основанного на Karel ++, поставила меня в тупик.На куче «звуковых сигналов» есть объект-робот, и он должен определить, сколько в куче, и вернуть это значение.Мне нужно преобразовать следующий итерационный метод в рекурсивный метод.

public int numOfBeepersInPile()
{
    int count = 0;
    while(nextToABeeper())
    {
        pickBeeper();
        count++;
    }
    return count;
}

Может кто-нибудь дать мне подсказку?

Ответы [ 2 ]

6 голосов
/ 14 июля 2011

Рассмотрим функцию, которая будет принимать счет в качестве аргумента, затем, если он находится рядом со звуковым сигналом, увеличить счетчик и вызвать себя с новым счетчиком. Если это не рядом с бипером, это сделано. В любом случае он должен вернуть текущий счет. Я мог бы сделать это слишком легко - не уверен!

0 голосов
/ 14 июля 2011
 public int numOfBeepersInPile()
 {
     if (nextToBeeper())
     {
        pickBeeper();
        return 1 + numOfBeepersInPile();
     }
     return 0;
 }
...