Я работаю над проблемой, чтобы напечатать все не увеличивающиеся подпоследовательности с суммой, равной заданному числу n, используя рекурсию.Я знаю, что с моим рекурсивным алгоритмом что-то не так, но я несколько раз проходил этот процесс и не могу найти свою ошибку.При вводе 4 мой код выдает:
4 431 4322 432211 43213 4321321 43213212 4321321211 Я считаю, что рекурсия удерживает предыдущие числа или суммы, использованные в прошлых рекурсивных вызовах, но не может найти причину.Кто-нибудь может помочь мне выяснить, почему программа не дает правильный вывод?
#include <iostream>
#include <string>
using namespace std;
int n;
void sums(int sum, string str)
{
if (sum==n)
{
cout << str << "\n";
return;
}
for (int i = n-sum; i >= 1; i--)
{
str+=to_string(i);
sums(sum+i, str);
}
}
int main()
{
cin >> n;
string s = "";
sums(0, s);
}