fork download
  1. def F(i, level=0):
  2. a = [-99999, 5, 1, 8, 9, 7, 2, 3, 11, 20, 15]
  3. n = 10
  4.  
  5. print " "*level, "sprawdzamy czy i == n? (%d == %d)" % (i, n)
  6. if i == n:
  7. print " "*level, "prawda zatem F(%d) zwraca n=%d" % (i, n)
  8. return n
  9. print " "*level, "falsz. przypisujemy j wartosc funkcji F(i+1) czyli F(%d)" % (i+1)
  10. j = F(i+1, level+1)
  11. print " "*level, "j ma wartosc %d" % j
  12. print " "*level, "sprawdzamy czy a[i] < a[j]? (%d < %d)" % (a[i], a[j])
  13. if a[i] < a[j]:
  14. print " "*level, "prawda zatem F(%d) zwraca i=%d" % (i, i)
  15. return i
  16. else:
  17. print " "*level, "falsz zatem F(%d) zwraca j=%d" % (i, j)
  18. return j
  19.  
  20.  
  21. F(7)
  22.  
Success #stdin #stdout 0.08s 10864KB
stdin
Standard input is empty
stdout
 sprawdzamy czy i == n? (7 == 10)
 falsz. przypisujemy j wartosc funkcji F(i+1) czyli F(8)
   sprawdzamy czy i == n? (8 == 10)
   falsz. przypisujemy j wartosc funkcji F(i+1) czyli F(9)
     sprawdzamy czy i == n? (9 == 10)
     falsz. przypisujemy j wartosc funkcji F(i+1) czyli F(10)
       sprawdzamy czy i == n? (10 == 10)
       prawda zatem F(10) zwraca n=10
     j ma wartosc 10
     sprawdzamy czy a[i] < a[j]? (20 < 15)
     falsz zatem F(9) zwraca j=10
   j ma wartosc 10
   sprawdzamy czy a[i] < a[j]? (11 < 15)
   prawda zatem F(8) zwraca i=8
 j ma wartosc 8
 sprawdzamy czy a[i] < a[j]? (3 < 11)
 prawda zatem F(7) zwraca i=7