Всевозможные суммы равные числу(рекурсией)

Помогите,пожалуйста.

Дано число n,надо вывести все суммы,которые равны n(рекурсией).

Например, n=5.

Должно вывести:

14
113
1112
11111
23
212

В чем проблема? Что пробовали? Что получилось, что не получилось?

вообще не имею представления,как реализовать через рекурсию.

А без нее?)

не смотрел,но есть уже догадки,надо взять сначала с 1 и n-1,затем с 2 и n-2,но не знаю как это написать.
мне,получается,надо постоянно выводить 1 и n-1,но как это сделать,не знаю

Ну если получится без рекурсии, то любой цикл легко превращается в рекурсию )

#include <stdio.h>

void f(int n, int i) {
    if (i == n) {
        return;
    }
    
    printf("%d\n", i);
    
    f(n, i + 1);
}

int main()
{
    int n = 5;
    
    for (int i = 0; i < n; i++) {
        printf("%d\n", i);
    }
    
    f(n, 0);

    return 0;
}

#include <iostream>
#include <fstream>
#include <vector>
#include <string>

using namespace std;

void print(int n, int currentN, int prevI, string s, int sum) {
	for (int i = prevI; i < currentN; i++) {
		string s1 = s;
		int sum1 = sum;
		s1 += to_string(i + 1);

		sum1 += i + 1;
		print( n , currentN - i - 1 , i , s1 , sum1);
		if (sum1 == n) {
			ofstream fout;
			fout.open("vivod.txt", ios_base::app);
			if (fout.is_open()) {
				fout << s1 << endl;
			}
			fout.close();
		}
	}
}

int main(){
	int n;
	fstream fin("vvod.txt");
	if (fin.is_open()) {
		fin >> n;
	}
	fin.close();
	print(n, n, 0, "", 0);
}