Я пишу метод рекурсии для вычисления гипотезы collatz для последовательности положительных целых чисел. Однако вместо остановки вычисления, когда значение достигает 1, мне нужно его остановить, когда значение станет меньше или равно исходному значению. Я не могу понять, какое условие я должен внести в оператор if.C Рекурсивная гипотеза Collatz только до того, как значение меньше исходного целого
int collatz (int n) {
printf("%d%s", n, " ");
if(n > collatz(n)) { // here I would get an error saying all path leads to the method itself
return n;
}
else {
if(n % 2 == 0) {
return collatz(n/2);
}
else {
return collatz((3 * n) + 1);
}
}
}
Рассмотрите возможность прохождения двух параметров, например. 'int collatz (int start, int n)'. – user3386109