Hello schemers, I am not getting the difference between `subproblem level` and `reduction number`. Relevant manual chapter:
https://www.gnu.org/software/mit-scheme/documentation/stable/mit-scheme-user/Subproblems-and-Reductions.html The explanation starts from: (define (factorial n) (if (< n 2) 1 (* n (factorial (- n 1))))) and says that if we somehow stop the computation while evaluating `(- n 1)`: (- n 1) is subproblem level 0 (factorial (- n 1))))) is subproblem level 1 (* n (factorial …) is subproblem level 2 Everything is clear here. But then it goes on to say that if we go further up , the `if` expression is not at subproblem level 3 (as I would have guessed), but at “reduction number” 1. Indeed if I `(debug)` and then `B` to the `if` expression, I get: Subproblem level: 2 Reduction number: 1 It is not clear to me what the difference is between “levels” and “reduction numbers” is or if that matters debugging-wise. Thanks in advance —F