目标是将一个函数和一个数字作为参数传递给另一个函数,然后递归调用传递的函数n次。我实现了这两种方式。该版本可以正常工作,可以打印Hello World
3次:
def do_n(fx, n):
if n <= 0:
return
else:
print(fx)
do_n(fx, n-1)
def return_greeting():
return "Hello World"
do_n(return_greeting(), 3)
此版本不起作用。它Hello World
仅打印一次,然后在第一次通过以下时间后似乎丢失了被调用的函数:
def do_n(fx, n):
if n <= 0:
return
else:
fx
do_n(fx, n-1)
def print_greeting():
print("Hello World")
do_n(print_greeting(), 3)
有人可以解释为什么第二个版本没有print_greeting
被调用3次并Hello World
在屏幕上打印3次的原因吗?
第二个版本不会调用print_greeting
三次-实际上,两个版本都不会调用。
您print_greeting
只需在每个代码段的最后一行中调用一次即可。在该行中,您将其调用,并返回字符串,然后将字符串传递到do_n
函数中。
您可以对第二个代码段进行两项更改,以使其按照您认为应该做的事情进行操作:
首先,不要print_greeting
在最后一行打电话。它看起来应该像这样:
do_n(print_greeting, 3)
这样,您就可以将实际函数传递print_greeting
到do_n函数中。
其次,fx
像这样调用传递的函数(现在称为):
fx()
此处的括号表示“调用此功能”。
整个代码段应如下所示:
def do_n(fx, n):
if n <= 0:
return
else:
fx()
do_n(fx, n-1)
def print_greeting():
print("Hello World")
do_n(print_greeting, 3)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句