У меня возникли проблемы, пытаясь выяснить, как отслеживать количество раз, когда моя рекурсивная функция вызывает себя при выполнении функции collatz. У меня есть определение функции:
template<class myType>
myType recursionSet<myType>::collatz(myType n)
{
if(n == 1)
return 1;
else {
if(n%2 == 1)
return collatz(3*n+1);
else
return collatz(n/2);
}
}
Как я могу отслеживать количество раз, когда эта функция вызывает себя? Я не могу представить, чтобы моя жизнь могла найти решение. Спасибо!
ссылка на функцию Коллатца: http://www.xamuel.com/collatz-recursion/
Вы пытаетесь вычислить длину цепи Коллатца, не так ли? Вы понимаете, что в настоящее время вы всегда возвращаетесь 1
? Вы должны изменить свой код, чтобы вместо этого возвращалось количество. Это означает добавление текущей итерации к рекурсивному вызову:
template<class myType>
myType recursionSet<myType>::collatz(myType n)
{
if(n == 1)
return 1;
else {
if(n%2 == 1)
return 1 + collatz(3*n+1);
else
return 1 + collatz(n/2);
}
}
Других решений пока нет …