您的位置:首页 > 其它

sicp Exercise 1.3 强行解答

2015-06-19 15:01 218 查看
题目如下:

Exercise 1.3. Define a procedure that takes three numbers as arguments and returns the sum of the

squares of the two larger numbers.

看到题目后,我个傻逼就严格遵循题意去解题了,在三个数中找到前两个大数,求其平方和。(解完后看网上的答案是将三个数累加,然后减去最小的)

解完后看看自己的代码,还是觉得自己解题的时候挺有勇气的...贴出来献个丑当是自嘲或者提示什么的:

(define (f a b c)
(cond ((> a b)
(cond ((> a c)
(cond ((> b c) (+ (* a a) (* b b)))
(else (+ (* a a) (* c c)))))
(else (+ (* c c) (* a a)))))
(else (cond ((< a c)
(cond ((> c b) (+ (* c c) (* b b)))
(else (+ (* b b) (* c c)))))
(else (+ (* b b) (* a a)))))))


补充一点证明以上解答确实没问题:

从3个数中取2个数,且没有顺序要求,就是一个n=3,r =2的无重复的组合问题,所以总共有三种组合方式。

代码中因为有顺序,所以是n=3,r=2的无重复的排列问题,总共有6种:

a,b a,c c,a c,b b,c b,a

忽略顺序之后就是a,b a,c b,c
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: