Python:传递函数并递归调用

达伦·R

目标是将一个函数和一个数字作为参数传递给另一个函数,然后递归调用传递的函数n次。我实现了这两种方式。该版本可以正常工作,可以打印Hello World3次:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章