1

任何人都可以在这里帮助我,我被困在将这段代码转换为递归函数的基本案例中......显然不能在递归函数中使用循环。

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()
4

2 回答 2

1

因为这一定是功课,所以我就不给你代码了,而是用文字解释一下怎么做:

您无需循环,而是创建一个调用自身的函数,并将您需要的变量作为参数传递。然后你在函数中有一个带有“if”的测试,当它为真时,停止循环并返回。那就是你将“掉”出循环。

因此,在这种情况下,您将传入ai作为参数,i在函数中加一,当i大于时a,只是return

于 2012-07-25T03:45:10.267 回答
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)
于 2017-02-02T19:12:42.997 回答