for的递归

Sin*_*nma 5 c++ recurrence

我试图弄清楚如何在很长一段时间内完成这项任务并且不按预期工作; 我正在编写一个代码,其中有1到k个数字,我需要找到所有可能的组合而不重复.例如3:1,2,3,12,13.

用1,2,3,4,5计数4位数字的示例.

int k = 5;
for (int p = 0; p < k; p++)
{
    for (int i = p+1; i < k; i++)
    {
        for (int j = i + 1; j < k; j++)
        {
            for (int h = j + 1; h < k; h++)
            {
                cout << p + 1 << i + 1 << j + 1 << h + 1 << endl;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

并且有一个3位数字的例子,1,2,3.

int k = 4
for (int p = 0; p < k; p++)
{
    for (int i = p+1; i < k; i++)
    {
        for (int j = i + 1; j < k; j++)
        {
            cout << p + 1 << i + 1 << j + 1 << endl;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为计算n位可能的位置而不重复我需要n代表.而且我不知道如何在没有递归的情况下这样做,当我这样做时不起作用.我的目标是获得递归,它将计算并打印n位数的可能位置.

Sin*_*nma 2

我自己用递归来计算可能性,但感谢你们的帮助。

我的递归是

void col(int ilosc)
{
    static int st;
    for (int i = st++; i < k; i++)
    {
        if (ilosc > 1)
            col(ilosc - 1);
        else
            sposob++;
    }
}
Run Code Online (Sandbox Code Playgroud)

其中ilosc是位数,sposob 是可能位置数的计数。

注意:sposobk是全局变量。