python - 我可以在不使用两个循环的情况下执行此任务吗?
问题描述
我试图解决一个简单的问题,我必须实现的是,如果值为n
is 2
,则打印
2211
21
或者如果值为n
is 3
,则打印
333222111
332211
321
我编码的是这个,
n=3
for i in range(n,0,-1):
for j in range(n,0,-1):
print(str(j)*i,sep='',end='')
print()
有没有办法在没有两个循环的情况下执行此任务?
或者,我可以在不使用循环的情况下迭代j
from n
to的值并打印每个变体吗?0
解决方案
你可以用递归来做到这一点,但时间复杂度不会改变......这样的事情:
def method(n, size):
if n == 0:
return;
for i in range(size,0,-1):
print(str(i)*n,sep='',end='')
print()
method(n-1, size)
method(3, 3)
推荐阅读
- python - 根据 pandas 中的时间戳差异条件提取值
- auth0 - 用户立即被重定向到 Auth0 登录页面,而不是登陆 IndexPage
- c# - 如何实现 SqlDataAdapter 的异步更新方法?
- http - MS Edge 无法处理部分内容 (206) 响应
- r - Geom_violin + geom_error_bar
- c# - VS2019 扩展使用 IDebugEventCallback2
- android - 发送通知时自动打开活动而不点击通知
- java - 如何解决此 java 错误“java.io.IOException: invalid constant type: 19 at 3”
- javascript - mobx/mobx-state-tree 中的可重用操作
- javascript - 使用 Ionic 4 + angular 的时间记录器