Racket 球拍-以指数为基础,不相乘
我正试图完成一个问题,它要求我编写一个函数,使它使用两个自然数base和expt,并生成expt的base。然而,唯一允许的内置算术函数是函数add1和sub1。 如何使用递归和辅助函数实现这一点 例如:Racket 球拍-以指数为基础,不相乘,racket,Racket,我正试图完成一个问题,它要求我编写一个函数,使它使用两个自然数base和expt,并生成expt的base。然而,唯一允许的内置算术函数是函数add1和sub1。 如何使用递归和辅助函数实现这一点 例如: (check-expect (exponent-without-mult 3 3) 27) 重复添加“添加1”: 乘法是重复加法: (define (nat* nat1 nat2) (cond [(zero? nat1) 0] [(positive? nat1) (nat
(check-expect (exponent-without-mult 3 3) 27)
重复添加“添加1”:
乘法是重复加法:
(define (nat* nat1 nat2)
(cond
[(zero? nat1) 0]
[(positive? nat1) (nat+ (nat* (sub1 nat1) nat2) nat2)]))
求幂是重复的乘法:
(define (nat^ nat1 nat2)
(cond
[(zero? nat2) 1]
[(positive? nat1) (nat* nat1 (nat^ nat1 (sub1 nat2)))]))
首先,您可以使用自己的加法构造自己的乘法函数,而加法又可以使用
add1
和sub1
构造。
(define (nat^ nat1 nat2)
(cond
[(zero? nat2) 1]
[(positive? nat1) (nat* nat1 (nat^ nat1 (sub1 nat2)))]))