基本的には何らかの数字になり、0から9までの数字が付加され、その数字に行き、0から9までの数字がN(この場合は13)を超えてスキップされます)。
は、ここで「私は」左センタリングを見て、何が起こっているか見ることが容易であるかもしれないカップルのステップスルー
です。
"i" return
1 //Add to list {1}
10 //Add to list {1,10}
100 //Bigger than n! (n = 13) {1,10}
11 //Add to list {1,10,11}
110 //Bigger than n! (n = 13) {1,10,11}
12 //Add to list {1,10,11,12}
120 //Bigger than n! (n = 13) {1,10,11,12}
13 //Add to list {1,10,11,12,13}
130 //Bigger than n! (n = 13) {1,10,11,12,13}
14 //Bigger than n! (n = 13) {1,10,11,12,13}
2 //Add to list {1,10,11,12,13,2}
20 //Bigger than n! (n = 13) {1,10,11,12,13,2}
3 //Add to list {1,10,11,12,13,2,3}
30 //Bigger than n! (n = 13) {1,10,11,12,13,2,3}
4 //Add to list {1,10,11,12,13,2,3,4}
40 //Bigger than n! (n = 13) {1,10,11,12,13,2,3,4}
5 //Add to list {1,10,11,12,13,2,3,4,5}
50 //Bigger than n! (n = 13) {1,10,11,12,13,2,3,4,5}
6 //Add to list {1,10,11,12,13,2,3,4,5,6}
60 //Bigger than n! (n = 13) {1,10,11,12,13,2,3,4,5,6}
7 //Add to list {1,10,11,12,13,2,3,4,5,6,7}
70 //Bigger than n! (n = 13) {1,10,11,12,13,2,3,4,5,6,7}
8 //Add to list {1,10,11,12,13,2,3,4,5,6,7,8}
80 //Bigger than n! (n = 13) {1,10,11,12,13,2,3,4,5,6,7,8}
9 //Add to list {1,10,11,12,13,2,3,4,5,6,7,8,9}
90 //Bigger than n! (n = 13) {1,10,11,12,13,2,3,4,5,6,7,8,9}
10 //Bigger than end! (end = 9) {1,10,11,12,13,2,3,4,5,6,7,8,9}
何が起こっているかのより完全なバージョン:***デバッガとそれによる
lexicalOrder(13)
result = {}
dfs(1,9,13,result) //1 is the smallest digit, 9 is the largest digit,
//13 is the largest possible value,
//Passed in "result" array to be edited.
i = start
//i = 1
Enter Loop
result.add(1)
//result = {1}
dfs(10,19,13,result)
i = start
//i = 10
Enter Loop
result.add(10)
//result = {1,10}
dfs(100,109,13,result)
i = start
//i = 100
Enter Loop
Whoops! "i" is greater than "n"! //n = 13
Exit Loop
i++
//i = 11
result.add(11)
//result = {1,10,11}
dfs(110,119,13,result)
i = start
//i = 110
Enter Loop
Whoops! "i" is greater than "n"! //n = 13
Exit Loop
i++
//i = 12
result.add(12)
//result = {1,10,11,12}
dfs(120,129,13,result)
i = start
//i = 120
Enter Loop
Whoops! "i" is greater than "n"! //n = 13
Exit Loop
i++
//i = 13
result.add(13)
//result = {1,10,11,12,13}
dfs(130,139,13,result)
i = start
//i = 130
Enter Loop
Whoops! "i" is greater than "n"! //n = 13
Exit Loop
i++
//i = 14
Whoops! "i" is greater than "n"! //n = 13
Exit Loop
i++
//i = 2
result.add(i)
//result = {1,10,11,12,13,2}
dfs(20,29,13,result)
i = start
//i = 20
Enter Loop
Whoops! "i" is greater than "n"! //n = 13
Exit Loop
i++
//i = 3
result.add(i)
//result = {1,10,11,12,13,2,3}
dfs(30,39,13,result)
i = start
//i = 30
Enter Loop
Whoops! "i" is greater than "n"! //n = 13
Exit Loop
i++
//i = 4
result.add(i)
//result = {1,10,11,12,13,2,3,4}
dfs(40,49,13,result)
i = start
//i = 40
Enter Loop
Whoops! "i" is greater than "n"! //n = 13
Exit Loop
i++
//i = 5
result.add(i)
//result = {1,10,11,12,13,2,3,4,5}
dfs(50,59,13,result)
i = start
//i = 50
Enter Loop
Whoops! "i" is greater than "n"! //n = 13
Exit Loop
i++
//i = 6
result.add(i)
//result = {1,10,11,12,13,2,3,4,5,6}
dfs(60,69,13,result)
i = start
//i = 60
Enter Loop
Whoops! "i" is greater than "n"! //n = 13
Exit Loop
i++
//i = 7
result.add(i)
//result = {1,10,11,12,13,2,3,4,5,6,7}
dfs(70,79,13,result)
i = start
//i = 70
Enter Loop
Whoops! "i" is greater than "n"! //n = 13
Exit Loop
i++
//i = 8
result.add(i)
//result = {1,10,11,12,13,2,3,4,5,6,7,8}
dfs(80,89,13,result)
i = start
//i = 80
Enter Loop
Whoops! "i" is greater than "n"! //n = 13
Exit Loop
i++
//i = 9
result.add(i)
//result = {1,10,11,12,13,2,3,4,5,6,7,8,9}
dfs(90,99,13,result)
i = start
//i = 90
Enter Loop
Whoops! "i" is greater than "n"! //n = 13
Exit Loop
i++
//i = 10
Whoops! "i" is greater than "end"! //end = 9
return result // result = {1,10,11,12,13,2,3,4,5,6,7,8,9}
ステップ***。また、 'return IntStream.rangeClosed(1、n).boxed()。sorted((a、b) - > String.valueOf(a).compareTo(String.valueOf(b))) \t \t \t \t .collect (Collectors.toList()); ' –
私はデバッガを踏んで、何が起きているのかを見ています。実際には100と109になり、whileループの条件は失敗します。なぜなら、iはもはやnより小さくないからです。しかし、私は10と19でどうやって終わるのかちょっと混乱していると思います。 –
@ElroyJetson 'dfs(10,19、n、result)'が複数回呼び出されます – Natecat