1 到 N 的所有数字按照字典序打印
按照字典序打印从 1 到 N 的所有数字,可以使用递归的方法实现。
首先,创建一个递归函数来进行字典序的打印,函数的输入参数包括当前要打印的数字 curr,以及总数 N。函数的递归终止条件是当 curr 大于 N 时,停止递归。
在递归函数中,首先打印当前的数字 curr ,然后递归调用函数打印从 curr * 10 到 curr * 10 + 9 这些数字之间的所有数字。但需要注意的是,当 curr * 10 大于 N 时,就不能再继续递归了,所以在递归调用前需要进行判断。
以下是使用递归实现的代码示例:
def printLexicographically(curr: int, N: int):
if curr > N:
return
print(curr)
for i in range(0, 10):
if curr * 10 + i > N:
return
printLexicographically(curr * 10 + i, N)
def printLexicographicallyFromOneToN(N: int):
for i in range(1, 10):
printLexicographically(i, N)
# 测试示例
printLexicographicallyFromOneToN(30) # 打印从 1 到 30 的所有数字
运行以上代码,会打印出从 1 到 30 的所有数字。
1
10
11
12
13
14
15
16
17
18
19
2
20
21
22
23
24
25
26
27
28
29
3
30
4
5
6
7
8
9
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 迪杰斯特拉算法
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论