[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Using divide-and-conquer recursion to create a cumulat

Subject: Using divide-and-conquer recursion to create a cumulative sequence
From: "Costello, Roger L." <costello@xxxxxxxxx>
Date: Fri, 11 Dec 2009 16:39:00 -0500
 Using divide-and-conquer recursion to create a cumulat
Hi Folks,

I wish to convert a sequence of N numbers:

   (23, 41, 70, 103, 99, 6)

Into a cumulative sequence, in which each number is the sum of the previous

   (23, 64, 134, 237, 336, 342)

One approach to solving this is to iterate through the N numbers and sum the
preceding numbers:

   for i=1 to N
       sum(for j=1 to i return numbers[j])

However, that approach has a time complexity of:

   1 + 2 + 3 + ... + N = N**2/2

For large N, that will be very expensive.

An alternative approach is to create a recursive function that does a single
pass through the sequence, carrying along (and adding) the accumulated total
on each recursive call. This has a time complexity of N. Nice.

The above (paraphrases) from Michael Kay's book, XSLT 2.0 and XPath 2.0, p.
The below is from me.

However, that sequential recursive approach will entail N recursive calls,
which will result in running out of memory for large N (let's assume that the
XSLT processor does not do tail recursive optimization).

I would like a way of solving the problem using divide-and-conquer recursion.
Can you provide a solution?


Current Thread


Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
First Name
Last Name
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.