SICP 問題1.3
問題 1.3
三つの数を引数としてとり, 大きい二つの数の二乗の和を返す手続きを定義せよ.
やっとプログラミングっぽい問題。
condの練習かな?
(require (lib "racket/trace.ss"))
(define a 1)
(define b 7)
(define c 5)(define sumofsquare ;「二乗の和」の定義
(cond ( (and (> a c)(> b c))(+ (* a a)(* b b)) )
;aとbがcより大きいとき、a^2+b^2
( (and (> b a)(> c a))(+ (* b b)(* c c)) )
;bとcがaより大きいとき、b^2+c^2
( (and (> a b)(> c b))(+ (* a a)(* c c)))))
;aとcがbより大きいとき、a^2+c^2sumofsquare
>74
でいけてる~と思ってたけど、これ手続きじゃなかった。
traceに怒られちゃった。
(define (sum-of-square x y)
(+ (* x x)(* y y)))
;二乗の和の定義
(define (hikisuu a b c)
(cond ( (and (> a c)(> b c))(sum-of-square a b))
;aとbがcより大きいとき、a^2+b^2
( (and (> b a)(> c a))(sum-of-square b c))
;bとcがaより大きいとき、b^2+c^2
(else
(sum-of-square a c))))
;aとcがbより大きい とき、a^2+c^2
(trace hikisuu)
(hikisuu 1 7 5)
>(hikisuu 1 7 5)
<74
手続き名がダサいな、、
はてな記法でracketないから見にくい~~~
せめて色だけでも変えれたらな
8/22 色だけ変えてみた
引用にしたら位置がずれるずれる(;;`)