PPT Slide
reverse ( using an accumulator )
/* rev2 ( Listin, Accum, Listout ) */
rev2( [ X | Y ] , Inter , Ans ) : -
rev2( Y , [ X | Inter ] , Ans ) .
| ? - rev2( [ a , b , c ] , [ ] , X ) .
0 rev 2 ( [ a , b , c ] , [ ] , __ 406 )
1 rev 2 ( [ b , c ] , [ a ] , __ 406 )
2 rev 2 ( [ c ] , [ b , a ] , __ 406 )
3 rev 2 ( [ ] , [ c , b , a ] , __ 406 )
3 rev 2 ( [ ] , [ c , b , a ] , [ c , b , a ] )
2 rev 2 ( [ c ] , [ b , a ] , [ c , b , a ] )
1 rev 2 ( [ b , c ] , [ a ] , [ c , b , a ] )
0 rev 2 ( [ a , b , c ] , [ ] , [ c , b , a ] )
Now it is 0(n) for a list of length n.