LOL!!! 
Yipes, how embarrassed am I????
So clever, yet so stupid...

thanks a million.

J.



On 2010-03-25, at 9:58 AM, Howard Siegel wrote:

> You never seem to be capturing the result of the recursive calls for return 
> to the caller.
> 
> You final if block should look like this:
> 
>        if(([endNode depth] < ([self contextDepth] - 1)) && ([mutableSeq 
> count] > 1) && (found == YES))
>        {
>                [mutableSeq removeObjectAtIndex:0];
>                endNode = [self getTrieNodeFromContextSequence:mutableSeq 
> withNode:endNode];
>        }
> 
> - h
> 
> On Thu, Mar 25, 2010 at 09:45, James Maxwell <jbmaxw...@rubato-music.com> 
> wrote:
> Hi Folks,
> 
> I've had problems with recursive functions before, but this one's making me 
> crazy.
> I have a trie (tree) data structure and I'm trying to find a sequence of ints 
> in the trie.
> 
> - (HSMM_TrieNode*) getTrieNodeFromContextSequence:(NSMutableArray *)aSequence 
> withNode:(HSMM_TrieNode*) aNode
> {
>        int coincidence;
>        BOOL found = NO;
>        HSMM_TrieNode* endNode = nil;
>        NSMutableArray* mutableSeq = [[NSMutableArray alloc] 
> initWithArray:aSequence copyItems:YES];
>        for(HSMM_TrieNode* child in [aNode children])
>        {
>                coincidence = [[mutableSeq objectAtIndex:0] intValue];
>                if([child coincidenceID] == coincidence)
>                {
>                        endNode = child;
>                        found = YES;
>                        break;
>                }
>        }
>        if(([endNode depth] < ([self contextDepth] - 1)) && ([mutableSeq 
> count] > 1) && (found == YES))
>        {
>                [mutableSeq removeObjectAtIndex:0];
>                [self getTrieNodeFromContextSequence:mutableSeq 
> withNode:endNode];
>        }
>        [mutableSeq release];
>        return endNode;
> }
> 
> The caller sends the sequence of ints (NSNumbers) and the root node of the 
> trie to search. If I NSLog the guts of this method, I can see that it is, in 
> fact, recursing down the trie, and correctly following the branch with the 
> matching ints (coincidenceID numbers), and reaching the point I need to 
> reach. The problem is that it's not returning the last node in the trie 
> (i.e., the last match), but rather is returning the first match. And I have 
> no idea why...
> Those last few tests before recursing are just checking that 1) I haven't 
> gone too deep in the trie (I actually want the last node *before* the leaf -- 
> "contextDepth" is the max depth of the trie), 2) that I haven't run out of 
> ints in the sequence, and 3) that I actually found branch to continue 
> searching down. If trie doesn't have a match for the start of the sequence, 
> the nil return is handled by the caller.
> 
> Can anyone see why the caller is getting the first match, rather than the 
> last?
> Immense thanks to anyone who can see what's up.
> 
> J.
> 
> 
> James B Maxwell
> Composer/Doctoral Student
> School for the Contemporary Arts (SCA)
> School for Interactive Arts + Technology (SIAT)
> Simon Fraser University
> jbmaxw...@rubato-music.com
> jbmax...@sfu.ca
> 
> _______________________________________________
> 
> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
> 
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
> 
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/cocoa-dev/hsiegel%40gmail.com
> 
> This email sent to hsie...@gmail.com
> 

James B Maxwell
Composer/Doctoral Student
School for the Contemporary Arts (SCA)
School for Interactive Arts + Technology (SIAT)
Simon Fraser University
jbmaxw...@rubato-music.com
jbmax...@sfu.ca

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to