Вы можете определить перегруженную функцию lindh
, которая принимает два аргумента.Перегруженная функция принимает два параметра, в то время как версия, вызываемая из main
, является «базовой» функцией, которая просто делегирует перегруженной функции.
Кроме того, поскольку вам необходимо вернуть значение lin
иcount
, вы можете вернуть std::pair<long, int>
для обозначения значения lin
и счетчика.Это устраняет необходимость в глобальной переменной
. Вот пример:
#include <utility>
#include <iostream>
long lindh(unsigned int n, int &count)
{
long lin = 0;
if (n == 1 || n == 2) {
lin = 1;
} else {
++count;
lin = 1 * lindh(n - 1, count) + 3 * lindh(n - 2, count);
}
return lin;
}
std::pair<long,int> lindh(unsigned int n)
{
int count = 0;
return {lindh(n, count), count};
}
int main()
{
auto b = lindh(24);
std::cout << "lindhauer = " << b.first << "\ncount = " << b.second << std::endl;
}
Живой пример