使用递归减法的除法

时间:2017-05-09 19:25:50

标签: scheme division subtraction

我正在尝试使用一个函数来分割两个数字,然后返回它们的商。 我需要使用递归减法来查找商。

我真的不明白怎么做。我想我需要一个计数器变量,每次递归函数时我都会增加1。问题是,我只能将两个参数传递给这个函数:
 (定义(除以b)所以我不确定如何使用计数器。

我可以获得一些psudeocode帮助吗?

2 个答案:

答案 0 :(得分:0)

Function result <- Divide ( a, b )
    counter = 0
    while a - b >= 0  do
        a = a-b
        counter = counter + 1
    EndWhile
    result = counter
End Function

Algoritm without_title
    write "which numbers: "
    read a b
    result = Divide(a, b)
    write "Result: ", result
EndAlgoritm

答案 1 :(得分:0)

计数器隐含在递归中:

(define (divide n d)
  (if (< n d)
      0
      (+ (divide (- n d) d) 1)))

这里 n 是分子, d 是分母;我们假设两者都不是消极的这是一个例子:

> (divide 27 4)
6

如果 d 为0,则无效;你知道为什么吗?

首次启动时,递归思考可能很困难。但是如果你继续瞎扯,你最终会学会递归思考,然后你会想知道为什么你认为这很难。