今天做Leetcode29时有个小BUG,bug原理如下:
Reference: 关于python递归调用的一个坑,打印有值, 返回却None?
递归直接调用函数,无法传参出来
s1 = 'abcdefg'
def right_shift(s, n):
"""
把传入的字符串,前n个字符移动到最后面
"""
if n < 1:
print(s) # 此步输出结果为 "efgabcd"
return s
s = s[1:] + s[0]
n -= 1
right_shift(s, n)
s = right_shift(s1, 4)
print(s)# 此步输出结果为 None
解决方法: return function:
s1 = 'abcdefg'
def right_shift(s, n):
"""
把传入的字符串,前n个字符移动到最后面
"""
if n < 1:
# print(s)
return s
s = s[1:] + s[0]
n -= 1
# 加入return, 其原理根装饰器的闭包接近!
return right_shift(s, n)
s = right_shift(s1, 4)
print(s) # 成功输出 "efgabcd"
撒花