Hailstone Sequence C ++ Рекурсия - PullRequest
       16

Hailstone Sequence C ++ Рекурсия

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

У меня возникли проблемы с преобразованием следующего кода из циклов в использование только рекурсии.

//longestHailstoneStartValue also cycles through each of the sequences from 1 
//to 'n' and after it is determined what the largest length is, it finds which 
//number corresponds with the longest length function.
//
//Sample input: '8'
//Sample output: '7'
//'7' is from the sequence starting with 7.

int longestHailstoneStartValue(int n)
{
    int u=1, w=0, z=0;

while(n>=u)
{
    if(w<lengthHailstone(u))
    {
        w=lengthHailstone(u);
        z=u;
    }

    u++;
}

return z;
}

Я должен преобразовать это в рекурсию и в любом случае взять любые дополнительные переменные, которые не используются / с новыми значениями, хранящимися в них.

1 Ответ

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

Вы должны извлечь переменную z, так как она практически бесполезна и не делает ничего, кроме хранения значения u, это может увеличить память для копирования значения u в z ...

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

int longestHailstoneStartValue(int n)
{
    int u = 1, w = 0;
    if(w < lengthHailstone(u))
        w = lengthHailstone(u); // Removed 'z'...
    u++;
    /* '?' is the ternary operator... If n is greater or equal to u then print the
       original value of u (Note the 'u++') or else recursively call the function till
       the condition 'n >= u' is satisfied... */
    return n >= u ? u - 1 : longestHailstoneStartValue(n); /* 'u - 1' since 'u' will
                                                               increment by 1 even when
                                                               the given condition is
                                                               true... */
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...