Recursion, generate all pyramid-paths, not working

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • process

    Recursion, generate all pyramid-paths, not working

    A website dedicated to the fascinating world of mathematics and programming



    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)]



    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.

    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)]

  • Terry Reedy

    #2
    Re: Recursion, generate all pyramid-paths, not working

    process wrote:
    A website dedicated to the fascinating world of mathematics and programming

    >
    >
    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

    Comment

    Working...