根据用户输入递归打印“ man”,“ eater”

时间:2018-10-12 00:47:53

标签: python-3.x recursion

我正在尝试以递归方式实现此结果

结果应为:

  

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))

1 个答案:

答案 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的奇偶校验即可。