题目内容有两个小问题,我先给出答案,然后罗列出代码,给出执行结果,分析执行过程。
a)p被调用了5次
b)步数是对数级 o(log n),空间是也是 o(log n),使用的空间仅仅与步骤相关,也就是步骤的线性函数。
代码
(defn abs[x](if (> x 0) x (- 0 x) ) )
(defn cube [x](* x x x))
(defn p[x](- (* 3 x) (* 4 (cube x))))
(defn sine [angle] (if (not (> (abs angle) 0.1)) angle (p (sine (/ angle 3.0)))))
执行结果
从执行结果中 可以看出,先进sine行展开,然后进行p函数合并计算。p的调用次数m满