Write a procedure to square numbers plan: use lambda and times (define square (lambda (x) (* x x))) Write a procedure to sum the squares of two numbers plan: use lambda and square (define sum-of-squares (lambda (x y) (+ (square x) (square y)))) Sum the numbers between 1 and some number n plan: add n+(n-1)+(n-2)+...+3+2+1 group n + ((n-1)+(n-2)+...+3+2+1) the sum between 1 and 1 = 1 (define sum-from-1-to-n (lambda (n) (if (= n 1) 1 (+ n (sum-from-1-to-n (- n 1)))))) Alternative: the formula (define sum-from-1-to-n (lambda (n) (/ (* n (+ n 1)) 2))) Which is better? Compute n! plan: multiply n*(n-1)*(n-2)*...*3*2*1*1 group n*((n-1)*(n-2)*...*3*2*1*1) 0! = 1 (define fact (lambda (n) (if (= n 0) 1 (* n (fact (- n 1)))))) Compute e plan 1: look it up plan 2: use exp: (exp 1) plan 3: use formula: sum [0..n] 1/(n!) (define find-e (lambda (n) (if (= n 0) 1. (+ (/ 1 (fact n)) (find-e (- n 1)))))) Compute nth fibonacci number plan: compute it from sum of n-1 and n-2th fib nums fib 0 = 1, fib 1 = 1 (define fib (lambda (n) (if (< n 2) n (+ (fib (- n 1)) (fib (- n 2)))))) Compute golden ratio plan: ratio of adjacent fibonacci numbers (define find-golden-ratio (lambda (n) (/ (fib n) (fib (- n 1))))) Compute pi plan: monte carlo method (define guess-pi (lambda (count) (* (/ (throw-n-darts count) count) 4))) (define throw-n-darts (lambda (n) (if (= n 0) 0 (if (< (sum-of-squares (random 1.0) (random 1.0)) 1) (+ 1 (throw-n-darts (- n 1))) (throw-n-darts (- n 1)))))) (guess-pi 10000) ;Value: 3.1444