Согласно определению в википедии , в последней строке вашего последнего определения есть ошибка. Должно быть:
(else (hyperoperation (- n 1) a (hyperoperation n a (- b 1))))))
вместо:
(else (hyperoperation (- b 1) a (hyperoperation n a (- b 1)))))))
Таким образом, возможное правильное рекурсивное определение может быть:
(define (hyperoperation n a b)
(cond ((= n 0) (+ b 1))
((= b 0) (cond ((= n 1) a)
((= n 2) 0)
(else 1)))
(else (hyperoperation (- n 1) a (hyperoperation n a (- b 1))))))