title: Output error is 0x03BB7390
body: <pre><code>def fastMaxVal(w, v, i, aW):
      global numCalls
      numCalls += 1
      try: return m[(i, aW)]
      except KeyError:
          if i == 0:
              if w[i] &lt;= aW:
                  m[(i, aW)] = v[i]
                  return v[i]
              else:
                  m[(i, aW)] = 0
                  return 0
          without_i = fastMaxVal(w, v, i-1, aW)
          if w[i] &gt; aW:
              m[(i, aW)] = without_i
              return without_i
          else:
              with_i = v[i] + fastMaxVal(w, v, i-1, aW - w[i])
          res = max(with_i, without_i)
          m[(i, aW)] = res
          return res
  
  def maxVal0(w, v, i, aW):
      m = {}
      return fastMaxVal
  
  weights = [1, 1, 5, 5, 3, 3, 4, 4]
  vals = [15, 15, 10, 10, 9, 9, 5, 5]
  numCalls = 0
  res = maxVal0(weights, vals, len(vals) - 1, 8)
  print ('max Val =', res, 'number of calls =', numCalls)
  </code></pre>
  
  <p>The program is about 01Knapsack problem. I use the decision tree to solve the problem. However, I ran the program and got the following result.</p>
  
  <blockquote>
    <p>max Val = function fastMaxVal at 0x03BB7390 number of calls = 0</p>
  </blockquote>
  
  <p>What's wrong with my program?</p>