我正在尝试以递归方式实现此结果
结果应为:
print_3(1)
人
print_3(3)
人
食者
人
尝试过此方法,但它确实做到了
def print_3(n):
if n == 1:
return ("man")
elif n == None:
return " "
elif n %2 == 0:
return ("eater")
else:
return print_3(n) + print_3(n - 1)
print(print_3(4))
答案 0 :(得分:1)
您可以尝试:
def print_3(n, even):
if n == 1:
print("man" if not even else "eater")
else:
print(["man", "eater"][n % 2 == 0 if not even else n % 2 != 0])
print_3(n-1, even)
print_3(4, even=True)
基本上,它使用n
的奇偶校验来确定要打印的字符串。递归由print_3(n-1, even)
提供。
注意 即使上面的代码确实使用了递归,但其使用方式至少是不寻常的。通常,递归用于将一个大问题分解为多个子问题,解决每个子问题并跟踪其结果,以便在以后构建原始问题的解决方案。在这种情况下,由于中间结果不重要,因此不会存储中间结果(请注意没有返回值+赋值语句)。要知道要打印哪个术语,只需查看n的奇偶校验即可。