Slide 54
Slide 54 text
AST of fact.rb
["stmts",
["func_def",
"fact",
["n", "v"],
["if",
["==", ["var_ref", "n"], ["lit", 1]],
["var_ref", "v"],
["func_call",
"fact",
["-", ["var_ref", "n"], ["lit", 1]],
["*", ["var_ref", "v"], ["-", ["var_ref", "n"], ["lit", 1]]]]]],
["func_call", "p", ["func_call", "fact", ["lit", 5000], ["lit", 1]]]]
def fact(n, v)
if n == 1
v
else
fact(n-1, v * (n-1))
end
end
p fact(5000, 1)