首页 > 解决方案 > 如何在 Scheme 中使用递归除法?

问题描述

我正在尝试使用三个参数 x、y 和 n 定义一个名为 (nDivide xyn) 的递归过程。它返回 x 除以 yn 的结果。我有一个除法函数(定义(Divide xy)(/ xy))。现在我正在尝试在 nDivide 中使用 Divide 函数,但我无法让它工作

标签: scheme

解决方案


基本上有两种方法可以做某事n

  • 做一次,然后做n - 1几次;
  • n - 1几次,然后做一次。

根据您选择的路径,您会获得不同的程序:

; divide, then recurse
(define (nDivide x y n)
    (if (zero? n)
            x
        (nDivide (Divide x y) y (- n 1))))

; recurse, then divide
(define (nDivide x y n)
    (if (zero? n)
            x
        (Divide (nDivide x y (- n 1)) y)))

推荐阅读