找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2448|回复: 1

[求助] 关于递归函数传递函数参数只能执行一次的问题

1

主题

1

帖子

1

积分

贫民

积分
1
不通 发表于 2020-8-3 16:08:57 | 显示全部楼层 |阅读模式
大家好,我是一个新手,目前正在按照教程学习python,教程里有这么一道题,是设计一个递归函数,然后用一个函数当参数,重复执行 n 次函数,然后我就写了这么一段。

def print_letter():
    print("Hello.")

def do_n(f,n):
    if n <= 0:
        return
    else:
        f
        do_n(f,n-1)

do_n(print_letter(),5)


可是执行后怎么也得不到想要的结果,Hello 字符串只显示了一次,然后我查了一下,那个 f 就变成 none 了,请问这是什么原因呢?

多谢各位帮助

回复

使用道具 举报

0

主题

8

帖子

8

积分

贫民

积分
8
QQ
猪不会转弯 发表于 2020-8-6 10:12:54 | 显示全部楼层
这里显然你是想做一个映射   而你是直接调用了函数print_letter()

  1. def print_letter():
  2.     print("Hello.")


  3. def do_n(f, n):
  4.     if n <= 0:
  5.         return
  6.     else:
  7.         f()
  8.         do_n(f, n-1)


  9. do_n(print_letter, 5)
复制代码

而你需要每次都打印的话    就不能直接调用函数
而是使用他的地址  进行一个映射
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表