可以使用递归实现这个问题。我们定义一个helper函数,接收两个参数n和i。每次递归都检查i是否能同时被3和5整除,如果是输出FizzBuzz;如果仅能被3整除输出Fizz;如果仅能被5整除输出Buzz;否则输出i。最后再调用helper函数,传入n和1。
代码如下:
def fizzBuzz_helper(n, i):
if i > n:
return
fizz = "Fizz" if i % 3 == 0 else ""
buzz = "Buzz" if i % 5 == 0 else ""
print(fizz + buzz or i)
fizzBuzz_helper(n, i + 1)
def fizzBuzz(n):
fizzBuzz_helper(n, 1)
fizzBuzz(15) # 打印出FizzBuzz数列
这个方法使用了递归和三元表达式,避免使用if/else/switch/循环语句,但是可能会因为递归深度过大而导致栈溢出。因此需要针对实际情况进行测试和优化。