Нет, это не хвостовая рекурсия.
Общий подход к созданию хвостовой рекурсивной функции хвостовой рекурсии состоит в том, чтобы включить аккумулятор, который является дополнительным аргументом, который передает текущую оценку процедуры через ваши рекурсивные вызовы.
Между прочим, именно здесь очень полезны "вспомогательные" функции. Общая практика состоит в том, чтобы определить вашу функцию так, чтобы она не брала аккумулятор, определяла в нем вспомогательную функцию, которая действительно собирает аккумулятор, и затем основная функция выполняет мало, кроме вызовите вспомогательную функцию. Через секунду вы поймете, что я имею в виду.
В вашем случае (если я правильно помню свою Схему: p):
(define (sqsum lis)
(define (sqsum-h lis acc)
(if (null? lis)
acc
(sqsum-h (cdr lis) (+ acc (* (car lis) (car lis))))
)
)
(sqsum-h lis 0)
)
Это хвостовая рекурсия, потому что последнее, что делает любой рекурсивный вызов, - это немедленно возвращает результат другой функции без ее изменения.