我正在处理FizzBuzz函数。我使用了递归。
def fizzbuzz_recursive(n):
if n == 0:
return
fizzbuzz_recursive(n - 1)
if n % 3 == 0 and n % 5 == 0:
print('FizzBuzz')
elif n % 3 == 0:
print('Fizz')
elif n % 5 == 0:
print('Buzz')
else:
print(n)
但我想在这里实现列表,即当我调用我的函数时,输出应该是:
>>> fizzbuzz_recursive(15)
[1, 2, 'Fizz', 4, 'Buzz', 'Fizz', 7, 8, 'Fizz', 'Buzz', 11, 'Fizz', 13, 14, 'FizzBuzz']
如何做到这一点?
一个简单的解决方案是,积累结果。
def fizzbuzz_recursive_list(n):
if n == 0:
return []
accum = fizzbuzz_recursive_list(n - 1)
if n % 3 == 0 and n % 5 == 0:
return accum + ['FizzBuzz']
elif n % 3 == 0:
return accum + ['Fizz']
elif n % 5 == 0:
return accum + ['Buzz']
else:
return accum + [n]
print(fizzbuzz_recursive_list(15))