Recursion, generate all pyramid-paths, not working

Terry Reedy tjreedy at udel.edu
Sat Oct 4 11:16:23 EDT 2008


process wrote:
> http://projecteuler.net/index.php?section=problems&id=18
> 
> 
> def recur(tree, pos):
>     if not tree:
>         return []
>     else:
>         return [[tree[0][pos]] + recur(tree[1:], pos)] + \
>                [[tree[0][pos]] + recur(tree[1:], pos+1)]

The backslash is not needed here or anytime there is an open (,[,or {.
Note that tree[0][pos] unless -n <= pos < n where n = len(tree)

> i have a list with [[1],[2,3],[4,5,6],[7,8,9,10]]
> 
> it i a pyramid so first is 1 then 23 then 456 thrn 78910
> 
> from one can go to 2 or 3. from 2 to 4or5, from 3 to 5 or 6.
> 
> i want to generate every path and compute the cost.
> 
> But I can't get the recursion right. It generates all the paths kind
> of but not in a matter i want to.

I do not understand what function you are trying to compute from the 
verbal description.  It is generally best to give a specific example(s) 
of what output you expect, as well as what you got.


recur([]) = []
recur([[1]],pos) = ?  do you start with pos = 0?

What do you mean by 'kind of' and 'not in a manner I want'?  We are not 
mind (want) readers ;-).

> also having to return after each other doesnt do anything right?
> like so:
> return [[tree[0][pos]] + recur(tree[1:], pos)]
> return [[tree[0][pos]] + recur(tree[1:], pos+1)]

Useless.  The second line is never executed.

tjr




More information about the Python-list mailing list