习题 1.26

习题 1.26_第1张图片

 我们先来看看题目要求,题目住说将 square 调用换成了(* x x),结果导致执行时间变慢。

根据以前学过的内容,我们知道 在做显示乘法的时候,是直接进行计算的,而在做函数调用的时候,是先进行表达式展开的,直接计算,就相当于2n个变量相乘,而展开后,相当于两个相乘的变量再n次方。这样会明显减少计算量,引发性能异常。问提与语言的执行模式相关,直接相乘,每个项的值,都会重新进行一次展开归并计算。而调用函数则不会。

你可能感兴趣的:(计算机程序的构造课后题,算法,clojure)