# -*- coding: utf-8 -*- """ Created on Wed Dec 12 09:17:48 2018 @author: Angelo """ def stampa_r(l): print(l.pop(0)) if len(l)>0: stampa_r(l) def max_r(l, m=None): if m: if l[0] > m: m = l[0] else: m = l[0] if len(l)>1: return max_r(l[1:], m) else: return m def max_r2(l): if len(l)==1: return l[0] max_coda = max_r2(l[1:]) if l[0]>max_coda: return l[0] else: return max_coda def somma(l): if len(l)==1: return l[0] return l[0] + somma(l[1:]) def palindroma(a): return pal(a,a[::-1]) def pal(a,b=None): if not b: b=a[::-1] if len(a)==1 and len(b)==1: if a[0] == b[0]: return True else: return False if a[0] == b[0]: return pal(a[1:],b[1:]) return False def pal2(a): if len(a)<=1: return True if a[0] == a[-1]: return pal2(a[1:-1]) return False def binarie(n): """Funzione ricorsiva che costruisce la lista con tutte le stringhe binarie lunghe n ES: binarie(2) = ['00','01','10','11'] """ if n == 1: return ['0','1'] binarie_corte = binarie(n-1) l = [] for s in binarie_corte: l.append('0'+s) l.append('1'+s) return l def anagrammi(s): """ Funzione ricorsiva che costruisce tutti gli anagrammi della stringa in ingresso """ if len(s)==1: return s ins = set() for i in range(len(s)): news = s[:i] + s[i+1:] for anagramma in anagrammi(news): ins.add(s[i]+anagramma) return ins def anagrammi2(s): if len(s)==1: return set(s) ins = anagrammi2(s[1:]) ins2 = set() for anag in ins: for i in range(len(anag)+1): ins2.add(anag[:i]+s[0]+anag[i:]) return ins2 class alberobinario: def __init__(self,valore, sx=None, dx=None): self.v=valore self.sx=sx self.dx=dx def altezza(self): """ Ritorna un intero che dice l'altezza dell'albero binario """ if not self.sx and not self.dx: """ l'albero รจ una foglia """ return 0 alsx = self.sx.altezza() if self.sx else 0 aldx = self.dx.altezza() if self.dx else 0 return max(alsx, aldx)+1 a = alberobinario(12) b = alberobinario(56) c = alberobinario(34, a, b) a = alberobinario(56) b = alberobinario(77) d = alberobinario(67, a, b) e = alberobinario(40, c, d)