Advertisement
Guest User

Untitled

a guest
Oct 11th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 1.10 KB | None | 0 0
  1. #lang racket
  2. (define (fast-exp x n)
  3.   (cond [(= n 0) 1]
  4.         [(= n 1) x]
  5.         [(even? n) (fast-exp (* x x) (/ n 2))]
  6.         [else (* x (fast-exp (* x x) (quotient n 2)))]))
  7.  
  8. (define (fast-exp2 x n)
  9.   (define (sqr x) (* x x))
  10.   (define half (quotient n 2))
  11.   (cond [(= n 0) 1]
  12.         [(= n 1) x]
  13.         [(even? n) (fast-exp2 (sqr x) half)]
  14.         [else (* x (fast-exp2 (sqr x) half))]))
  15.  
  16. (define (roots a b c)
  17.   (define discriminant (- (fast-exp b 2) (* 4 (* a c))))
  18.   (cond [(and (= a 0) (= b 0))
  19.          (if (= c 0) +inf.0 0)]
  20.         [(= discriminant 0) 1]
  21.         [(< discriminant 0) 0]
  22.         [(> discriminant 0) 2]))
  23.  
  24. (define (fact n)
  25.   (define (loop i res)
  26.     (if (> i n)
  27.         res
  28.         (loop (+ i 1) (* res i))))
  29.   (loop 1 1))
  30.  
  31. (define (fib n)
  32.   (define (loop i prev curr)
  33.     (if (= i n)
  34.         curr
  35.         (loop (+ i 1) curr (+ prev curr))))
  36.   (if (= n 0) 0
  37.     (loop 1 0 1)))
  38.  
  39. (define (reverse-int n)
  40.   (define (loop temp newN)
  41.     (if (= newN 0)
  42.         temp
  43.         (loop (+ (* temp 10) (remainder newN 10)) (quotient newN 10))))
  44.     (loop 0 n))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement