Python 3.x “印刷”;“人”&引用;“食客”;递归地依赖于用户输入
我试图递归地实现这个结果 结果应该是: 印刷3(1) 人 印刷3(3) 人 食客 人 尝试过这个,但它确实做到了Python 3.x “印刷”;“人”&引用;“食客”;递归地依赖于用户输入,python-3.x,recursion,Python 3.x,Recursion,我试图递归地实现这个结果 结果应该是: 印刷3(1) 人 印刷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)
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))
你可以尝试:
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,偶数)
提供
注意
尽管上面的代码确实使用递归,但它使用递归的方式至少是不寻常的。通常,递归用于将一个大问题分解为多个子问题,求解每个子问题并跟踪其结果,以便以后构建原始问题的解决方案。在这种情况下,不会存储中间结果(注意没有return+assignment语句),因为它们并不重要。要知道打印哪个术语,只需查看n的奇偶性就足够了。只需在两个单词之间交替
n
次?是的。这就是它的运作方式。你必须回去吗?你能不能不回去直接打印?随便哪种方式都行。一旦它被递归地完成了。[some][something]
做什么。你能解释一下这个概念吗<代码>[something]是一种条件。当它计算true
时,python将true
转换为1
。然后,您有[“man”,“eater”][1]
,它显然返回“eater”
,因为它是该列表的索引1
处的元素。相反,如果条件的计算结果为false
,即0
,则返回索引0
处的元素,即“man”
。它在应用程序3中工作。但除此之外,它没有打印出预期的内容。用4和world调用函数,hello,world,helloIt不适用于偶数。所以想要得到>>“男人”“食客”,你需要添加一个标志,告诉它从男人或食客开始。我编辑了我的答案,看看现在是否有效。