【发布时间】:2010-07-27 16:13:18
【问题描述】:
我仍然在自己完成如何设计程序中的练习,但又被卡住了。这次是问题11.4.7:
开发功能 is-not-divisible-by=1]、i 和自然数 数字 m,其中 i
使用 is-not-divisible-by
第一部分我并没有太费劲:
;; A natural number [>=1] is either 1. 1 or
;; 2. (add1 n) where n is a natural number [>=1].
;; is-not-divisible-by<=i : N[>=1] N -> boolean
(define (is-not-divisible-by<=i i m)
(cond
[(= i 1) true]
[else (cond
[(= (remainder m i) 0) false]
[else (is-not-divisible-by<=i (sub1 i) m)])]))
(is-not-divisible-by<=i 3 6) ; expected: false.
(is-not-divisible-by<=i 6 7) ; expected: true.
但是我只是看不出如何在使用自然递归的同时使用一个变量来做到这一点。我考虑过使用列表,但这会带来同样的问题。
我能看到的唯一解决方案是给另一个变量 - 假设 x - 与 n 相同的值,然后按照 is-not-divisible-by
这个问题真的让我很头疼,所以如果可以的话,任何帮助或提示都会很棒!
【问题讨论】: