Why is this wrong
(define (fastexp x n)
(if (even? n)
(square (fastexp x (/ n 2))
(* x (fastexp x (- n 1))))))
but this is right
(define (fast-expt b n)
(cond ((= n 0) 1)
((even? n) (square (fast-expt b (/ n 2))))
(else (* b (fast-expt b (- n 1))))))
Sometimes I struggle with figuring out how using if versus cond affects how a program runs. Can someone help?