Python 3.x 使用递归和默认值根据输入绘制模式

Python 3.x 使用递归和默认值根据输入绘制模式,python-3.x,recursion,Python 3.x,Recursion,我有以下代码: def pattern1(n, b=n): if n == 1: return 'A|'*b else: return 'A|'*b + '\n' + pattern1(n-1, b) print(pattern1(5)) 因此,当我使用1个参数调用pattern1方法时,默认的第二个参数应该具有相同的值,因此这不起作用,是否有任何代码等效项?您不能在函数定义中引用其他参数,但可以在代码中轻松地执行此操作,如下所示: def pattern1(n, b

我有以下代码:

def pattern1(n, b=n):
  if n == 1:
    return 'A|'*b
  else:
    return 'A|'*b + '\n' + pattern1(n-1, b)

print(pattern1(5))

因此,当我使用1个参数调用pattern1方法时,默认的第二个参数应该具有相同的值,因此这不起作用,是否有任何代码等效项?

您不能在函数定义中引用其他参数,但可以在代码中轻松地执行此操作,如下所示:

def pattern1(n, b):
  if not b:
    b = n
  if n == 1:
    return 'A|'*b
  else:
    return 'A|'*b + '\n' + pattern1(n-1, b)

print(pattern1(5))
但是,在代码中,在减去1之前,它看起来总是
b
n
,因此在修改它之前,只需复制
n
,不要传递第二个参数:

def pattern1(n):
  if n == 1:
    return 'A|'*n
  else:
    n_copy = n
    return 'A|'*n + '\n' + pattern1(n-1, n_copy)

print(pattern1(5))

你能编辑你的问题并把你想要的结果放在那里吗?