Это можно выяснить с помощью математики.Но если вы хотите измерить его эмпирически, вы можете использовать статический счетчик в функции.Эту логику легко распространить и на подсчет количества добавлений.
int mystery(int n) {
static int invocations = 1;
cout << "mystery has been invoked " << invocations++ << " times.\n";
if ( n == 0 || n == 1 || n == 2) {
return n ;
}
return (mystery(n-1) + mystery(n-2) + mystery(n-3)) ;
}
Вы также можете использовать глобальную переменную.Мне не нравится ни одно из этих решений.Они затрудняют многопоточность и нарушают некоторые важные принципы проектирования.Как один раз, чтобы ответить на этот вопрос, а затем удалить из вашего кода, они в порядке, но я бы сделал, если бы я хотел, чтобы это как постоянная функция, было следующее:это интересная проблема, но, вероятно, не слишком сложно.Я думаю, что это окажется экспоненциальным.
Кстати, не используйте endl
, если только это не то, что вы хотите использовать.Это очень медленно, так как вызывает принудительную очистку буфера всякий раз, когда вы его используете.Используйте '\n'
.