我已经尝试了 2 个小时来解决这个问题!请考虑以下代码:
(define (PowListF list)
(PowListFHelp list (- (length list) 1)))
(define (FuncPow f n)
(if (= 0 n)
f
(lambda (x)
(FuncPow (f (- n 1)) x))))
(define (PowListFHelp list n)
(if (= n 0)
(list (list-ref list 0))
(cons (FuncPow (list-ref list n) n)
(PowListFHelp list (- n 1)))))
火箭计划编译器给我错误:应用程序:不是程序;期望一个可以应用于给定参数的过程:(# #) arguments...: #
它指向(缺点部分......
并且以下使用相同 if 结构的代码确实有效:
(define (polyCheb n)
(reverse (polyChebHelp n)))
(define (polyChebHelp n)
(if (= n 0)
(list (polyChebFunc n))
(cons (polyChebFunc n)
(polyChebHelp (- n 1)))))
(define (polyChebFunc n)
(if (= n 0)
(lambda (x) 1)
(if (= n 1)
(lambda (x) x)
(lambda (x)
(- (* (* 2 x)
((polyChebFunc(- n 1)) x))
((polyChebFunc(- n 2)) x))))))
编辑: PowListF 被赋予函数列表作为参数,返回相同的列表 st 每个函数都由自身(其索引 + 1)次组成......
用法: ((list-ref (PowListF (list (lambda (x) x) (lambda (x) (expt x 2)))) 1) 2) 值应该是 2^2^2=2^4=16
编辑2:
这是解决方案:
(define (FuncPow f n)
(if (= 0 n)
f
(lambda (x) (f ((FuncPow f (- n 1)) x)))))