基本上它所做的是转到某个数字,并将数字 0 到 9 附加到它上面,然后转到这些数字,并将 0 到 9 附加到它上面,跳过大于 N 的数字(在这种情况下为 13)。
这是几个步骤
通过查看左侧居中的“i”可能更容易了解正在发生的事情。
"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}