在python中递归打印菱形
有人能帮我一下吗,我被困在将代码转换为递归函数的基本情况中。。。显然不能在递归函数中使用循环在python中递归打印菱形,python,printing,recursion,python-3.x,Python,Printing,Recursion,Python 3.x,有人能帮我一下吗,我被困在将代码转换为递归函数的基本情况中。。。显然不能在递归函数中使用循环 def diamond(a): assert a > 0, "width must be greater than zero" for i in range(0, a, 2): for c in range(0, a - i, 2): print(" ", end='') if a % 2 == 0: i += 1 for m i
def diamond(a):
assert a > 0, "width must be greater than zero"
for i in range(0, a, 2):
for c in range(0, a - i, 2):
print(" ", end='')
if a % 2 == 0:
i += 1
for m in range(0, i - 1):
print("*", end='')
print()
for i in range (0, a, 2):
for c in range(0, i, 2):
print(" ", end='')
for m in range(0, a - i):
print("*", end='')
print()
因为这必须是家庭作业,所以我不会给你代码,而是用文字解释如何做: 您不需要循环,而是创建一个调用自身的函数,并将所需的变量作为参数传递。然后在函数中有一个带有“if”的测试,如果为true,则停止循环并返回。那就是你会“掉”出循环
因此,在这种情况下,您可以传入
a
和i
作为参数,在函数中增加i
,当i
大于a
时,只需返回因为这必须是家庭作业,我不会给您代码,而是用文字说明如何操作:
您不需要循环,而是创建一个调用自身的函数,并将所需的变量作为参数传递。然后在函数中有一个带有“if”的测试,如果为true,则停止循环并返回。那就是你会“掉”出循环
因此,在这种情况下,您可以传入a
和i
作为参数,在函数中增加i
,当i
大于a
时,只需返回试试这个
def triangles(n):
if not n & 1:
raise ValueError('n must be odd')
print_diamond(0, n, n >> 1)
def print_diamond(start, stop, midpoint):
if start < stop:
if start <= midpoint:
print(' ' * (midpoint - start) + '* ' * ((start << 1) + 1))
else:
print(' ' * (start - midpoint) + '* ' * ((stop - start << 1) - 1))
print_diamond(start + 1, stop, midpoint)
triangles(5)
def三角形(n):
如果不是n&1:
raise VALUERROR('n必须为奇数')
打印菱形(0,n,n>>1)
def打印_菱形(开始、停止、中点):
如果开始<停止:
如果开始试试这个
def triangles(n):
if not n & 1:
raise ValueError('n must be odd')
print_diamond(0, n, n >> 1)
def print_diamond(start, stop, midpoint):
if start < stop:
if start <= midpoint:
print(' ' * (midpoint - start) + '* ' * ((start << 1) + 1))
else:
print(' ' * (start - midpoint) + '* ' * ((stop - start << 1) - 1))
print_diamond(start + 1, stop, midpoint)
triangles(5)
def三角形(n):
如果不是n&1:
raise VALUERROR('n必须为奇数')
打印菱形(0,n,n>>1)
def打印_菱形(开始、停止、中点):
如果开始<停止:
如果开始计算基本情况是递归的一半。到目前为止你有什么?你的代码格式错误。另外,不要在循环开始后留下空格。找出基本情况是递归的一半。到目前为止你有什么?你的代码格式错误。另外,循环开始后不要留下任何空间。Lennart,我们不允许更改该函数所使用的参数量。@user1550365然后创建另一个函数。非常确定,只有原始宽度作为第一个参数无法做到这一点,我认为您需要使用默认的可选第二个参数parameter@user1550365:马辛说的。请记住,在Python中,您也可以在函数中创建函数。但是我会创建一个默认的可选第二个参数I=0
(或者level=0
可能是一个更好的名称),虽然这会添加一个参数,但您仍然可以仅使用一个参数调用它。Lennart,我们不允许更改该函数所使用的参数量。@user1550365然后创建另一个函数。非常确定,只有原始宽度作为第一个参数无法做到这一点,我认为您需要使用默认的可选第二个参数parameter@user1550365:马辛说的。请记住,在Python中,您也可以在函数中创建函数。但是我会创建一个默认的可选第二个参数I=0
(或者level=0
可能是一个更好的名称),虽然这会添加一个参数,但您仍然可以仅使用一个参数调用它。