任何人都可以在这里帮助我,我坚持将这些代码转换为递归函数的基本情况......显然不能在递归函数中使用循环。
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()
答案 0 :(得分:1)
因为这必须是作业,我不会给你代码,但解释如何用文字来做:
不是循环,而是创建一个调用自身的函数,并将所需的变量作为参数传递。然后你在函数中使用“if”进行测试,当为true时,停止循环而改为返回。那就是你将“退出”循环。
因此,在这种情况下,您会传递a
和i
作为参数,在函数中使用一个增加i
,并在i
大于{{1时只是a
。
答案 1 :(得分:0)
试试这个
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)