Recursion 具有多个lambda的递归函数方案
如何从使过程递归的函数生成过程 例如,如果有一个函数返回一个过程,则返回的过程将包含两个参数(x和y)。当使用z作为参数调用时,它将递归地调用自己,直到z满足某些要求为止Recursion 具有多个lambda的递归函数方案,recursion,lambda,scheme,Recursion,Lambda,Scheme,如何从使过程递归的函数生成过程 例如,如果有一个函数返回一个过程,则返回的过程将包含两个参数(x和y)。当使用z作为参数调用时,它将递归地调用自己,直到z满足某些要求为止 (define test (lambda (x y) (lambda z (if (> z 100) z (RecursiveCallToChangeValueOfZ (+ x y z)))))) 以下是三种变体: #lang racket ;; use
(define test
(lambda (x y)
(lambda z
(if (> z 100)
z
(RecursiveCallToChangeValueOfZ (+ x y z))))))
以下是三种变体:
#lang racket
;; use internal definition
(define test
(lambda (x y)
(define f
(lambda z
(if (> z 100)
z
(f (+ x y z)))))
f))
;; use letrec (which internal definition expands to
(define test2
(lambda (x y)
(letrec ([f (lambda z
(if (> z 100)
z
(f (+ x y z))))])
f)))
(require mzlib/etc)
;; use rec (a little syntactic sugar that expands to the previous solution)
(define test3
(lambda (x y)
(rec f (lambda z
(if (> z 100)
z
(f (+ x y z)))))))