程序应在屏幕上用第一行打印星号 包含一个星号,第二行包含2个星号,直到第n个 包含n个星号的行。
这是我到目前为止所拥有的,但有更简单的方法吗?我想使用if
/ else
,但无法使其发挥作用。
def show_asterisks(n):
if (n > 0):
show_asterisks(n-1)
num = n
str = ''
while (num > 0):
str += '*'
num -= 1
print(str)
有更好的方法吗?谢谢你的帮助!
答案 0 :(得分:1)
不需要递归,但是如果你想......
此解决方案基于以下事实:Python序列(包括字符串)可以乘以正整数。
assert [1, 2] * 2 == [1, 2, 1, 2]
assert "qwe" * 3 == "qweqweqwe"
解决方案很简单:
def print_asterisks(n):
if (n > 1):
print_asterisks(n-1)
print "*" * n
答案 1 :(得分:1)
由于您希望星号线增加
作为行号=打印的星号数
def a(i, n):
if i > n: # check if we reached the end and prevent infinite recursion
return
print(i*'*')
a(i+1, n) # call the function recursively with an incremented line number
a(1,3) # (start linenumber, end linenumber)
给出
*
**
***
答案 2 :(得分:0)
python中最简单的方法是使用循环和字符串乘法运算符
def show_asterisks(n):
if n>1: # >0 is redundant!
show_asterisks(n-1)
print('*' * n)
递归是类似的
Mapper.CreateMap<MySourceType, MyDestinationType>();