Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #lang racket
- (define (fast-exp x n)
- (cond [(= n 0) 1]
- [(= n 1) x]
- [(even? n) (fast-exp (* x x) (/ n 2))]
- [else (* x (fast-exp (* x x) (quotient n 2)))]))
- (define (fast-exp2 x n)
- (define (sqr x) (* x x))
- (define half (quotient n 2))
- (cond [(= n 0) 1]
- [(= n 1) x]
- [(even? n) (fast-exp2 (sqr x) half)]
- [else (* x (fast-exp2 (sqr x) half))]))
- (define (roots a b c)
- (define discriminant (- (fast-exp b 2) (* 4 (* a c))))
- (cond [(and (= a 0) (= b 0))
- (if (= c 0) +inf.0 0)]
- [(= discriminant 0) 1]
- [(< discriminant 0) 0]
- [(> discriminant 0) 2]))
- (define (fact n)
- (define (loop i res)
- (if (> i n)
- res
- (loop (+ i 1) (* res i))))
- (loop 1 1))
- (define (fib n)
- (define (loop i prev curr)
- (if (= i n)
- curr
- (loop (+ i 1) curr (+ prev curr))))
- (if (= n 0) 0
- (loop 1 0 1)))
- (define (reverse-int n)
- (define (loop temp newN)
- (if (= newN 0)
- temp
- (loop (+ (* temp 10) (remainder newN 10)) (quotient newN 10))))
- (loop 0 n))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement