1
Tail recursive functions are where the last instruction of a function is a recursive call. We can eliminate the call and hence additional use of the stack by jumping to the start of the function as opposed to calling it.
2
1 2 3 2 * 3 1 6 4 3 4 - 3 1 6 1 6 + 1 1 7 1 + 7 8
1 + ((2 * 3) + (4 - 3))
3
ldc 3: put 3 on stack iload 3: load the 4th local variable onto stack istore 1: store top of the stack to the 2nd local variable ifeq label: compare top of the stack to 0, if they are equal, jump to label if_icmpge label: take 2 items off stack, if value2 > value1 then jump to label