Métodos recursivos

Uma mensagem pode ser utilizada recursivamente na definição de qualquer método. Por exemplo, o método abaixo, que poderia implementar a mensagem fatorial na classe Integer, utiliza essa mensagem recursivamente:

fatorial
self = 0 ifTrue: [^1].
self < 0
ifTrue: [self error: 'receptor não deve ser negativo']
ifFalse: [^self * (self - 1) fatorial]

A mensagem error: pertence ao protocolo da classe Object, e é portanto acessível a objetos de todas as classes, como descrito na seção A classe Object e o protocolo comum a todos os objetos. O seu efeito é retornar uma mensagem de erro.