Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x “印刷”;“人”&引用;“食客”;递归地依赖于用户输入_Python 3.x_Recursion - Fatal编程技术网

Python 3.x “印刷”;“人”&引用;“食客”;递归地依赖于用户输入

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)

我试图递归地实现这个结果

结果应该是:

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


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不适用于偶数。所以想要得到>>“男人”“食客”,你需要添加一个标志,告诉它从男人或食客开始。我编辑了我的答案,看看现在是否有效。