我正在通过bert计划练习并在这个练习中遇到困难:
示例:(n-occurences 544555 5)=> 4
任何想法如何进行计数?
我在想这样的事情:
(define (occurences d n)
(if (equal? (remainder d 10) n)
(add1 (occurences (quotient d 10) n))
(occurences (quotient d 10) n)
))
所以在一个例子中,如1223 2,它会:
答案 0 :(得分:0)
您错过了递归的基本情况;如果d为0,你需要停止。你把n和d混合了几次:
(define (occurences d n)
(if (= 0 d)
(if (= 0 n) 1 0) ; base case
(if (= (remainder d 10) n)
(add1 (occurences (quotient d 10) n))
(occurences (quotient d 10) n))))
测试:
> (occurences 544555 5)
4
参数(d和n)演变如下:
d=544555 n=5
d=54455 n=5
d=5445 n=5
d=544 n=5
d=54 n=5
d=5 n=5
d=0 n=5