版权声明:本文为博主原创文章,转载请注明出处:http://blog.jerkybible.com/2014/01/07/2014-01-07-练习1.10-练习1.17/
访问原文「练习1.10-练习1.17」
1.练习1.10
这个是阿克曼函数,真的很牛,花了我很长时间。
表达式的求值就不说了。
(define (f n) (A 0 n)) ——-2n
(define (g n) (A 1 n))——-2的n次方
(define (h n) (A 2 n))——-n个2的次方,例如:(h 4)表示为2的2次方的2次方的2次方
2.练习1.11
递归计算过程:
|
|
迭代计算过程:
|
|
解释一下迭代计算过程吧,利用a b c 三个数字保存临时的数据,num表示目前计算的状态,当num>n时,表示已经求得的结果在a中。
下面的结果是别人的例子,不是有多好,只是给我很大的启发,参数的移动可以增强程序的灵活性,不错!!我得记住这一点。。。
|
|
3.练习1.12
|
|
row表示第几行,col表示第row行的第几个数数字。当col为row行的第1个或者最后一个数的时候,结果为1;否则,结果为row-1行的col-1的数加上row-1行的col的数。4.练习1.13
不知道证明的对不对,对0和1的求值略去。
假设在n-1和n时,满足方程,代入n+1的方程 Φn +Φn -1=Φn +1,接着证明(Υn+Υn-1)/根5小于0.5,上式可变为Υn-1(Υ+1)/根5,可知Υn-1/根5小于0.5,而(Υ+1)/根5明显小于1,所以这个式子小于0.5,所以根据数学归纳法。。。
5.练习1.14
2的11次?
6.练习1.15
都是logn?
7.练习1.16
|
|
通过这道题,我总结到了,在目前的lisp学习中,主要是递归过程,所以应该在最开始的时候将出口留好,而不是放在随后的过程中。
8.练习1.17
|
|
这道题,额,没考虑b为0的时候,看来测试用例做的不够全面啊。改为
|
|
即可!不过貌似也没考虑正负数什么了,说白了就是练习,理解这种“折半”的计算方式。