在顺序无关紧要的情况下遍历数字[java]

时间:2018-07-14 06:09:23

标签: java loops modularity

我说的顺序无关紧要什么?

在使用常规for循环搜索数字时,我们会遇到“重复”的数字,例如“ 1135”,“ 1315”或“ 5113”


一个很好的例子是数字的总和,其中每个数字 x 都应用了函数 f(x)

使用x ^ 5假设最多4位数字(只是为了避免相邻值之间出现重叠),而不是像这样搜索:

for (int i=0; i<9999; i++)
    return i;

我们可以搜索这样的数字:

0003    0123
0013    1123
0113    0223
1113    1223 
0023    2223....

获得

    for (int i=0; i<10; i++)
    for (int j=0; j<=i; j++)
    for (int k=0; k<=j; k++)
    for (int l=0; l<=k; l++)
        return i*1000+j*100+k*10+l; //returns 4 digit number ijkl 

与以前一样,将搜索大小显着减小到了<800 vs 9999。

这可以正常工作,但是当我们处理更高的数字时,必须手动更改代码。


这是我的3个问题:

可以针对模块化更改此代码吗?

是否有更有效的方式来迭代这些数字?

奖励积分:存在重叠时,是否有其他方法可以迭代?

例如:当f(x)= x时1111 == 0002!

0 个答案:

没有答案