以下の関数は末尾再帰とみなしてよいでしょうか?

(define (for-each-pair f g pair r)
 (cond ((null? pair) r)
    ((not (pair? pair)) (g (f pair) r))
    (else
     (for-each-pair f g (cdr pair) (for-each-pair f g (car pair) r)))))

終端式内に for-each-pair の呼び出しが入っていても
大丈夫でしょうか?