Python初学者出现的问题,望解答

#问题

img

#各函数定义

img

img

#我写的

img

#得出错误

img

我想知道为啥我这样做是错的,谢谢🙏

递归


def make_repeater(func, n):
    
    def final(number):
        if n == 0:
            return number
        else:
            return func(make_repeater(func, n-1)(number))
    return final

因为(square,0)(5)中,i=1直接运行了func=平方的结果(5的平方为25)即a,然后直接return a即25!

什么问题?

用func1调用自己,调用n次,那么每一次返回的还得是func1自己,而你返回的是f,这继续循环就调用不下去了呀,参数类型变了