Home Manual Reference Source Test Repository

src/rnth.js


/**
 * @param {inplace adder} iadd
 * @param {zero constructor} zero
 * @param {one constructor} one
 */

export function __rnth__ ( iadd , zero , one ) {

	var rnth = function ( n ) {

		if ( n === 0 ) {
			return zero( ) ;
		}

		if ( n === 1 ) {
			return one( ) ;
		}

		return iadd( rnth( n - 2 ) , rnth( n - 1 ) ) ;

	} ;

	return rnth ;

}