2013-04-09 37 views
1

我想找到一个序列对中的序列号。我试图编写一个程序来验证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))))) 
+0

你应该更好地解释一下你的意思是“一对中的序列号是多少”。什么序列?公式来自哪里? – 2013-04-09 03:44:03

回答

2

为什么你认为该过程“不工作”?的功能,如所定义,正确地实现所需的式 - 和将总是导致这种碱情况下,当两者mn相等:

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

上面将返回当然0,并在所有的乘法递归将取消,因为你会被过零乘以被一遍又一遍:

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

所以,问题不在于过程本身,但配方中它的实施。确保它是正确的。