Scheme 按一对的顺序编号
我想找出一对在序列中属于哪个数字。我试图写一个程序来验证f(1,n)=2n-2和f(m+1,n+1)=2f(m,n)。当我打电话(号码99100)时它工作,但当我打电话(号码100100)时它不工作。为什么不起作用?(100100)的序列号是什么 以下是我的程序: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))))) 为什么你认为这个程序“不起作用”?定义
(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
所以问题不在于程序本身,而在于它所执行的公式。确保它是正确的。你应该更好地解释“一对落下的序列中的哪个数字”是什么意思。什么序列?这个公式是从哪里来的?