Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

"Recursion not present" esercizio Larghezza Albero

l
luca.98 (380 points)
1 8 13
in Programmare in python by (380 points)

Salve,volevo sapere come può essere strutturata questa ricorsione in modo che sia riconosciuta dal grade:

def right(dx,level=0):
    if dx:
        level=right(dx.dx,level+1)
    return level

def left(sx,level=0):
    if sx:
        level=left(sx.sx,level-1)
    return level

return right(tree.dx)-left(tree.sx)
277 views
closed

2 Answers

Best answer
a.capobianco1 (16770 points)
14 54 165
by (16.8k points)
selected by

immagino tu ti riferisca all'eser 17 dell'esame del 12-7-18...

io ho provato a mettere le tue istruzioni all'esterno della funzione principale es17 e a richiamarle con il return:

def es17(tree):
    return right(tree.dx)-left(tree.sx)

def right(dx,level=0):
    if dx:
        level=right(dx.dx,level+1)
    return level

def left(sx,level=0):
    if sx:
        level=left(sx.sx,level-1)
    return level

e la ricorsione è stata individuata… tuttavia il test non passa… io ho risolto diversamente… meno stringato del professore ma più semplice per me:

def es17(tree):
    class memo:
        def __init__(self):
            self._min=None
            self._max=None
   
    m=memo()
    _es17(tree, m)
   

def _es17(tree, m, pos=0):
    if m._min == None: m._min=pos
    if m._max == None: m._max=pos
   
    if tree:
        _es17(tree.sx, m, pos-1)
        _es17(tree.dx, m, pos+1)
       
        if m._min > pos: m._min=pos
        if m._max < pos: m._max=pos

l
luca.98 (380 points)
1 8 13
by (380 points)
Perfetto, grazie
_andrea_ (45670 points)
13 42 297
by (45.7k points)
Dove le hai definite queste funzioni?