C++ 创建子任务数字较大的数字:C++;

C++ 创建子任务数字较大的数字:C++;,c++,logic,C++,Logic,我必须编写一个函数,比如numbers(int-MSD,int-num),这样,如果我将函数调用为numbers(5,4),它应该生成所有大于5000的4位数字,其中后面的数字更大 e、 g 它应该输出 5678 5679 5689 5789 6789 这是唯一可能的一组4位数字,其中后面的数字大于前面的数字 相似性数字(3,3)应输出: 345 346 347 348 349 356 357 358 359 ... ... 456 457 ... 789 希望我把问题说清楚。尝试了很多,但

我必须编写一个函数,比如
numbers(int-MSD,int-num)
,这样,如果我将函数调用为
numbers(5,4)
,它应该生成所有大于5000的4位数字,其中后面的数字更大

e、 g

它应该输出

5678
5679
5689
5789
6789
这是唯一可能的一组4位数字,其中后面的数字大于前面的数字

相似性
数字(3,3)
应输出:

345
346
347
348
349
356
357
358
359
...
...
456
457
...
789
希望我把问题说清楚。尝试了很多,但我无法实现逻辑

谢谢

您可以使用递归。。。(或将下面的代码转换为迭代代码) 在本例中,我打印到std输出,但您可以对生成的数字执行任何操作

我修复了代码以匹配您的确切请求,并添加了pow的天真实现

int Pow(int a, int b)
{
    int res = a;
    for (int i = 0 ; i < b-1 ; ++i)
    {
        res *= a;
    }

    return res;
}

void numbersInternal(int MSD,int num,int _base)
{       
    if (num == 1)
    {
        for (int j = MSD ; j <= 9 ; ++j)
        {
           cout << _base + j << endl;    
        }
    }
    else
    { 
        for (int j = MSD ; j <= 9-num+1 ; ++j)
        {
            numbersInternal(j + 1,num-1,_base + Pow(10,num-1)*j);        
        }
    }

}

void numbers(int MSD,int num)
{    
    numbersInternal(MSD,num,0);
}
intpow(inta,intb)
{
int res=a;
对于(int i=0;i对于(intj=MSD;j@LuchianGrigore)这类东西,首先生成初始数
void displayHighers(intn){inttemp=0;intn=n;而(n!=0){temp+=n*pow(10,n-n);n--;}你能试着调试吗?@LuchianGrigore我没能把多重循环弄对..我仍在尝试解决它,但想问问是否有人比这更好的逻辑-基本上我试图实现的是<代码>数字(5,4)
应生成初始编号为
5678
然后我将循环单位位置直到
9
然后
10
位置直到
9
以所有数字的增量进行所有组合直到
9
,但我在实现此逻辑时迷路了..您没有回答是否调试了它。添加了代码中的pow方法。