Ошибка: Необработанное исключение по адресу 0x001F2619

Цель задачи такова: написать программу способную посчитать данное выражение: y=cos(x)+cox(x2)+cos(x3)+...+cos(x*n). Использовать рекурсию. При отладке и введении x и n выбивает следующее "Необработанное исключение по адресу 0x001F2619 в ****.exe: 0xC00000FD: Stack overflow (параметры: 0x00000001, 0x01202FA0)."

#include <iostream>
using namespace std;
float cos_sum(float x,int i){
    float k = x * i;
    float sum = cos(k);
    for (int n = 1; n <= i; n++)
    {
        sum += cos_sum(x, i--);
    }
    
    return sum;
}
int main() {
    setlocale(0, "rus");
    float x;
    int n;
    cout << "x = ";
    cin >> x;
    cout << "n = ";
    cin >> n;
    
    
    cos_sum(x, n);
}

Укажите пожалуйста на ошибку


Ответы (1 шт):

Автор решения: Harry

Вот исправленный код:

#include <iostream>
using namespace std;
double cos_sum(double x, unsigned int n)
{
    if (n == 0) return 0;
    return cos_sum(x,n-1) + cos(x*n);
}

int main()
{
    double x;
    unsigned int n;
    cout << "x = ";
    cin >> x;
    cout << "n = ";
    cin >> n;
    cout << cos_sum(x, n);
}
→ Ссылка