一对中的序列号

时间:2013-04-09 03:05:35

标签: scheme racket

我想找到一对中的序列中的数字。我正在尝试编写一个程序来验证f(1,n)= 2n - 2和f(m + 1,n + 1)= 2f (m,n)。它在我打电话时(编号99,100)有效,但是当我打电话时它不起作用(编号100,100)。为什么不起作用? (100,100)的序列号是什么?

这是我的程序:

(define (number m n)
   (if (= m 1)
       (- (* 2 n) 2)
       (* 2 (number (- m 1) (- n 1)))))

1 个答案:

答案 0 :(得分:2)

为什么你认为这个程序“不起作用”?正如所定义的那样,函数正确地实现了所需的公式 - 当mn相等时,它总是会导致这种基本情况:

(- (* 2 1) 2) ; if m equals 1 then n equals 1

当然上面会返回0,并且递归中的所有乘法都会取消,因为你会一遍又一遍地乘以零:

(* 2 (* 2 ... (* 2 0)))
=> 0

所以问题不在于程序本身,而在于它正在实施的公式中。确保它是正确的。