; recursion
(define (factorial n)
(if (zero? n) 1
(* n (factorial (- n 1)))))
(display (factorial 7)) (newline)
(define (factorial n)
(let fact ((n n) (result 1))
(if (zero? n) result
(fact (- n 1) (* n result)))))
(display (factorial 7)) (newline)
(define (fibonacci n)
(if (< n 2) 1
(+ (fibonacci (- n 1))
(fibonacci (- n 2)))))
(display (fibonacci 7)) (newline)
(define (fibonacci n)
(let fib ((k 1) (fk 1) (fk-1 1))
(if (= k n) fk
(fib (+ k 1) (+ fk fk-1) fk))))
(display (fibonacci 7)) (newline)
OyByZWN1cnNpb24KCihkZWZpbmUgKGZhY3RvcmlhbCBuKQogIChpZiAoemVybz8gbikgMQogICAgKCogbiAoZmFjdG9yaWFsICgtIG4gMSkpKSkpCgooZGlzcGxheSAoZmFjdG9yaWFsIDcpKSAobmV3bGluZSkKCihkZWZpbmUgKGZhY3RvcmlhbCBuKQogIChsZXQgZmFjdCAoKG4gbikgKHJlc3VsdCAxKSkKICAgIChpZiAoemVybz8gbikgcmVzdWx0CiAgICAgIChmYWN0ICgtIG4gMSkgKCogbiByZXN1bHQpKSkpKQoKKGRpc3BsYXkgKGZhY3RvcmlhbCA3KSkgKG5ld2xpbmUpCgooZGVmaW5lIChmaWJvbmFjY2kgbikKICAoaWYgKDwgbiAyKSAxCiAgICAoKyAoZmlib25hY2NpICgtIG4gMSkpCiAgICAgICAoZmlib25hY2NpICgtIG4gMikpKSkpCgooZGlzcGxheSAoZmlib25hY2NpIDcpKSAobmV3bGluZSkKCihkZWZpbmUgKGZpYm9uYWNjaSBuKQogIChsZXQgZmliICgoayAxKSAoZmsgMSkgKGZrLTEgMSkpCiAgICAoaWYgKD0gayBuKSBmawogICAgICAoZmliICgrIGsgMSkgKCsgZmsgZmstMSkgZmspKSkpCgooZGlzcGxheSAoZmlib25hY2NpIDcpKSAobmV3bGluZSk=