Сообщение операторы инкремента и декремента на самом деле увеличения или уменьшения значения после того, как вычисляется выражение, означает, что она будет изменять значения a
и b
после того, как они были переданы в функцию.
Таким образом, вы будете в конечном итоге прохождение неизменные значения a
и b
к add()
функции все время, которое будет вызывать переполнение стека (вызывая ошибки сегментации), так как это, по существу, рекурсивная функция, которая никогда не встречается возвращающегося состояние.
Ото, если вы используете Преинкремент или оператор декремента, значение a
и b
будет получать уменьшились, прежде чем они будут переданы рекурсивным add()
вызова, тем самым удовлетворяя условию return
, следовательно, ваша программа работает, как ожидался.
При этом вы должны указать тип возврата функции, например, в этом случае, int
.
Код не действителен C++. – juanchopanza
можете ли вы рассказать нам, на каком языке вы программируете, и вставить сообщение об ошибке слишком –
, это связано с тем, что операторы применяются в качестве постинкремента, а не для преинкремента. Когда переменная передается в стек для рекурсивного вызова, она должна быть увеличена сначала (не после) для завершения цикла – amdixon