Scheme 按一对的顺序编号

Scheme 按一对的顺序编号,scheme,racket,Scheme,Racket,我想找出一对在序列中属于哪个数字。我试图写一个程序来验证f(1,n)=2n-2和f(m+1,n+1)=2f(m,n)。当我打电话(号码99100)时它工作,但当我打电话(号码100100)时它不工作。为什么不起作用?(100100)的序列号是什么 以下是我的程序: (define (number m n) (if (= m 1) (- (* 2 n) 2) (* 2 (number (- m 1) (- n 1))))) 为什么你认为这个程序“不起作用”?定义

我想找出一对在序列中属于哪个数字。我试图写一个程序来验证f(1,n)=2n-2和f(m+1,n+1)=2f(m,n)。当我打电话(号码99100)时它工作,但当我打电话(号码100100)时它不工作。为什么不起作用?(100100)的序列号是什么

以下是我的程序:

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

为什么你认为这个程序“不起作用”?定义的函数正确地实现了所需的公式,并且当
m
n
相等时,函数始终会导致这种基本情况:

(- (* 2 1) 2) ; if m equals 1 then n equals 1
当然,上面将返回
0
,递归中的所有乘法都将取消,因为您将一次又一次地乘以零:

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

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

你应该更好地解释“一对落下的序列中的哪个数字”是什么意思。什么序列?这个公式是从哪里来的?