生成所有可能的N位数字的算法,其数字按递增顺序排列

Ins*_*der 7 algorithm

我想要一个算法来生成所有可能的N位数字,其数字按递增顺序排列.

例如:如果N = 3,那么可能的数字是:012,123,234,246,567,259,因为:

0 <1 <2

...

2 <5 <9

等等

我该怎么做?

我开发了以下算法,但它只生成连续增加数字的数字,如123,234,345,456,567等.因此,错过了一大组数字.

private static void generate(int start,int n)
{
    if((start+n)>9)
        return;
    else
    {
        for(int i=0;i<n;i++)
            System.out.print(start+i);

        System.out.println();
        generate(start+1,n);
     }
}
Run Code Online (Sandbox Code Playgroud)

Hen*_*rik 6

试着保留你原来的想法:

private static void generate(int prefix, int start, int n)
    {
        if (n == 0)
        {
            System.out.print(prefix);
            System.out.println();
        }
        else
        {
            for(int i=start;i<10;i++)
                generate(10*prefix+i, i+1, n-1);
        }
    }
Run Code Online (Sandbox Code Playgroud)