Is there a difference between jQuery recursive function calls and Javascript's setInterval?
===

I am animating a few images of waves to go up and down slowly and repeatedly to give it a more lively feel and I found Javascript's setInterval().  This is working perfectly to animate my different wave images up and down every 5.3 seconds (at slightly different speeds).
    
    self.setInterval("waves()",5300);

    function waves() {	
	$('.waves1').animate({
		bottom: '-5px'
	}, 2000);
	$('.waves1').animate({
		bottom: '7px'
	}, 3000);
	
	$('.waves2').animate({
		bottom: '-5px'
	}, 2200);
	$('.waves2').animate({
		bottom: '7px'
	}, 2800);
	
	$('.waves3').animate({
		bottom: '-5px'
	}, 1800);
	$('.waves3').animate({
		bottom: '7px'
	}, 3200);
}

After implementing this, I also found that you could just use a recursive jQuery function to keep the animation going also.  For example:

    function animateWaves() {
       $('.waves1').animate({ top: '+=15' },
                            { duration: 2000, easing: "linear" })
                   .animate({ top: '-=15' },
                            { duration: 3000, easing: "linear",
                              complete: animateWaves });
    }

    $(function() {
        animateWaves();
    });


What are the advantages of one (recursion or setInterval) over the other?