小编she*_*har的帖子

在更大范围的值上评估函数时出现执行错误 (StackOverflowError)

在这个过程中,我正在学习 Clojure 并解决 SICP 书中的练习。评估(search-for-primes 1001 10000)时出现此错误,但当调用较小的值时,(search-for-primes 101 1000)它工作正常。

这似乎是一个内存问题,但我无法将其归零。很想得到你的帮助。谢谢你。下面是代码。

(defn square [x]
  (* x x))

(defn divides? [a b]
  (= (rem b a) 0))

(defn find-divisor [n test-divisor]
  (cond
    (> (square test-divisor) n) n
    (divides? test-divisor n) test-divisor
    :else (find-divisor n (+ test-divisor 1))))

(defn smallest-divisor [n]
  (find-divisor n 2))

;;return true if prime
(defn prime? 
  [n]
  (= n (smallest-divisor n)))

;;return the first of the three consecutive prime numbers
(defn search-for-primes [low high]
  (if …
Run Code Online (Sandbox Code Playgroud)

clojure

0
推荐指数
1
解决办法
292
查看次数

标签 统计

clojure ×1