recursive algorithm example