Recursion Scheme-foo(xy)没有调用递归调用
foo(xy)是一个必须在 这是我的方案代码:Recursion Scheme-foo(xy)没有调用递归调用,recursion,scheme,Recursion,Scheme,foo(xy)是一个必须在 这是我的方案代码: (define foo (lambda (x y) (if (<= y 0) (x) 0) (if (<= x 0) (y) 0) (if (>= x y) (+ x foo ((- x 1) (- y 2))) 0) (if (< x y) (+ y foo ((- x 2) (- y 3))) 0))) (定义foo (λ(x y) (如果(它打印的是相同的精确数字,而不是12!!
(define foo
(lambda (x y)
(if (<= y 0) (x) 0)
(if (<= x 0) (y) 0)
(if (>= x y) (+ x foo ((- x 1) (- y 2))) 0)
(if (< x y) (+ y foo ((- x 2) (- y 3))) 0)))
(定义foo
(λ(x y)
(如果(它打印的是相同的精确数字,而不是12!!我不知道它为什么不进行递归调用。这里没有递归调用。要使它成为一个调用,你需要在它周围加上括号,如(foo(-x2)(-y3))
只有最后一个if
被视为是过程的结果。前面的所有条件都返回一个值,因为它不是最后一个,所以它会丢弃结果并继续到下一个。为了使多个条件表示某个内容,它们必须嵌套。因此,将整个下一个if
替换为0
(define (foo x y)
(if (<= x 0)
x
(if (<= y 0)
y
...)))
(define (foo x y)
(cond
((<= x 0) x)
((<= y 0) y)
...
(else ...)))