Я пытаюсь суммировать целые числа, но я не знаю, где ошибка в этом коде просто скажите мне, где ошибка в этом коде, не дают другие пути решения этого вопросаОшибка рекурсии - где этот код идет не так?
В выход должен быть 6, но код дает 4.
int SUM(int n) {
cout<<n<<endl;
if(n!=1)
return n + SUM(--n);
return n;
}
int main() {
cout<<SUM(3)<<endl;
}
'возвращение п + SUM (- п);' очень подозрительно, так как вы ссылки п, но мутирует его где-нибудь еще в том же выражении. Вероятно, это отличается от того, что вы ожидаете. – user1937198
Почему декремент вместо того, чтобы просто передавать «n-1» в качестве аргумента? У вас есть порядок оценки проблемы, как написано - неопределенно, как вещи вычисляются, но декремент, вероятно, происходит до того, как 'n' на LHS добавления будет оценен, что приведет к результату, который вы видите. –
, но поиск факториала одинаково работает отлично, –