[ *add(), {3, 4, 5, 6}, [] ]
return [code]*data + add(&data[1])[/code]
[ *add(), {4, 5, 6}, [] ]
[ *add(), {3, 4, 5, 6}, [] ]
...
[ *add(), {}, [0] ]
[ *add(), {6}, [] ]
[ *add(), {5, 6}, [] ]
[ *add(), {4, 5, 6}, [] ]
[ *add(), {3, 4, 5, 6}, [] ]
Function calls are complete, now return a value
[ *add(), {6}, [6 + 0] ]
[ *add(), {5, 6}, [] ]
[ *add(), {4, 5, 6}, [] ]
[ *add(), {3, 4, 5, 6}, [] ]
[ *add(), {5, 6}, [5 + 6 + 0] ]
[ *add(), {4, 5, 6}, [] ]
[ *add(), {3, 4, 5, 6}, [] ]
...
[ *add(), {3, 4, 5, 6}, [3 + 4 + 5 + 6 + 0] ] |