我试图完成一个问题,要求我编写一个函数,使其使用两个自然数base和expt,并为expt生成基数。但是,唯一允许的内置算术函数是函数add1和sub1。 如何使用递归和辅助函数来实现此目的?
示例:
(check-expect (exponent-without-mult 3 3) 27)
答案 0 :(得分:0)
添加重复“加1”:
(define (nat+ nat1 nat2)
(cond
[(zero? nat1) nat2]
[(positive? nat1) (add1 (nat+ (sub1 nat1) nat2))]))
乘法是重复加法:
(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)))]))