Algorithm 确定一个数的所有倍数的特定算法

Algorithm 确定一个数的所有倍数的特定算法,algorithm,Algorithm,我正在为我正在做的一个项目确定一个算法。目标是获得所有数字组合序列,其中每个相邻数字的最大值是彼此的倍数。数字和序列长度是输入 例如: 如果我给一个输入序列长度3和一个最大数5,我应该得到这样一个输出 [ 1, 1, 1 ] [ 1, 1, 2 ] [ 1, 1, 3 ] [ 1, 1, 4 ] [ 1, 2, 4 ] [ 1, 3, 3 ] [ 1, 4, 4 ] [ 2, 2, 2 ] [ 2, 2, 4 ] [ 2, 4, 4 ] [ 3, 3, 3 ] [ 4, 4, 4 ] 在所有序

我正在为我正在做的一个项目确定一个算法。目标是获得所有数字组合序列,其中每个相邻数字的最大值是彼此的倍数。数字和序列长度是输入

例如: 如果我给一个输入序列长度3和一个最大数5,我应该得到这样一个输出

[ 1, 1, 1 ]
[ 1, 1, 2 ]
[ 1, 1, 3 ]
[ 1, 1, 4 ]
[ 1, 2, 4 ]
[ 1, 3, 3 ]
[ 1, 4, 4 ]
[ 2, 2, 2 ]
[ 2, 2, 4 ]
[ 2, 4, 4 ]
[ 3, 3, 3 ]
[ 4, 4, 4 ]

在所有序列中,每个数字都是其前一个相邻数字的倍数,而所有数字都小于5,这是作为输入给定的最大值

您可以使用回溯来获取所需的所有序列

回溯与DFS非常相似。您可以使用参数{您在序列中放置了多少个数字}生成递归函数,并在序列中放置适当的值(参数+1)后调用递归函数。 在函数结束时,必须清除按顺序输入的数字。
如果序列已满,您也将终止函数。

到目前为止您尝试了什么?我尝试了一种序列算法,但没有达到我想要的效果,我尝试实现一个树,其中根是每个序列的唯一初始编号,因此在示例中,我们有4棵树。你能用一些代码或伪代码解释更多吗?如果你能发布完整的代码,最好编辑你自己的答案,
int seq[105];

void f(int idx) {
    if(idx == length) print();
    for(int i=1;1;i++) {
        if(i*seq[idx-1] > max_number) break;
        seq[idx]=i*seq[idx-1];
        f(idx+1);
        seq[idx]=0;
    }