递归的FizzBuzz函数--在一个列表中存储值。

问题描述 投票:0回答:1

我正在处理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']

如何做到这一点?

python
1个回答
0
投票

一个简单的解决方案是,积累结果。

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))
© www.soinside.com 2019 - 2024. All rights reserved.