example: $fib$ -- a function can call itself: our rules still work! file fib.m +----------------------------------+ | function x = fib(n) | | if n < 2 | | x = n; | | else | | x = fib(n-1) + fib(n-2); | | end | +----------------------------------+ run $fib(3)$ inside command window; this time, we omit the BIG enclosing scope: +---------+ |command | |+----+ | || [] | | |+----+ | +---------+ +----------------+ >fib(3) |command fib_3 | | |+----+ +----+ | | || [] | | [] | | | |+----+ +----+ | | +----------------+ | | +---------------------+ | |command fib_3 | | |+----+ +---------+ | | || [] | | +---+ | | | |+----+ | n | 3 | | | | | | +---+ | | | | +---------+ | | +---------------------+ | | +------------------------------+ | >fib(2) |command fib_3 fib_3_2 | | | |+----+ +---------+ +----+ | | | || [] | | +---+ | | [] | | | | |+----+ | n | 3 | | +----+ | | | | | +---+ | | | | | +---------+ | | | +------------------------------+ | | | | +---------------------------------+ | | |command fib_3 fib_3_2 | | | |+----+ +---------+ +---------+ | | | || [] | | +---+ | | +---+ | | | | |+----+ | n | 3 | | | n | 2 | | | | | | | +---+ | | +---+ | | | | | +---------+ +---------+ | | | +---------------------------------+ | | | | +--------------------------------------------+ | | >fib(1) |command fib_3 fib_3_2 fib_3_2_1 | | | | |+----+ +---------+ +---------+ +----+ | | | | || [] | | +---+ | | +---+ | | [] | | | | | |+----+ | n | 3 | | | n | 2 | | +----+ | | | | | | +---+ | | +---+ | | | | | | +---------+ +---------+ | | | | +--------------------------------------------+ | | | | | | +---------------------------------------------+ | | | |command fib_3 fib_3_2 fib_3_2_1 | | | | |+----+ +---------+ +---------+ +---------+ | | | | || [] | | +---+ | | +---+ | | +---+ | | | | | |+----+ | n | 3 | | | n | 2 | | | n | 1 | | | | | | | | +---+ | | +---+ | | +---+ | | | | | | +---------+ +---------+ +---------+ | | | | +---------------------------------------------+ | | | | | | +---------------------------------------------+ | | | |command fib_3 fib_3_2 fib_3_2_1 | | | | |+----+ +---------+ +---------+ +---------+ | | | | || [] | | +---+ | | +---+ | | +---+ | | | | | |+----+ | n | 3 | | | n | 2 | | | n | 1 | | | | | | | | +---+ | | +---+ | | +---+ | | | | | | +---------+ +---------+ | +---+ | | | | | | | x | 1 | | | | | | | | +---+ | | | | | | +---------+ | | | | +---------------------------------------------+ | | | | | | +---------------------------------+ | | fib(0) |command fib_3 fib_3_2 fib_3_2_0 | | | | |+----+ +---------+ +---------+ +----+ | | | | || [] | | +---+ | | +---+ | | [] | | | | | |+----+ | n | 3 | | | n | 2 | | +----+ | | | | | | +---+ | | +---+ | | | | | | +---------+ +---------+ | | | | +--------------------------------------------+ | | | | | | +---------------------------------------------+ | | | |command fib_3 fib_3_2 fib_3_2_0 | | | | |+----+ +---------+ +---------+ +---------+ | | | | || [] | | +---+ | | +---+ | | +---+ | | | | | |+----+ | n | 3 | | | n | 2 | | | n | 0 | | | | | | | | +---+ | | +---+ | | +---+ | | | | | | +---------+ +---------+ +---------+ | | | | +---------------------------------------------+ | | | | | | +---------------------------------------------+ | | | |command fib_3 fib_3_2 fib_3_2_0 | | | | |+----+ +---------+ +---------+ +---------+ | | | | || [] | | +---+ | | +---+ | | +---+ | | | | | |+----+ | n | 3 | | | n | 2 | | | n | 0 | | | | | | | | +---+ | | +---+ | | +---+ | | | | | | +---------+ +---------+ | +---+ | | | | | | | x | 0 | | | | | | | | +---+ | | | | | | +---------+ | | | | +---------------------------------------------+ | | | | | | +---------------------------------+ | | fib(1) |command fib_3 fib_3_1 | | | |+----+ +---------+ +----+ | | | || [] | | +---+ | | [] | | | | |+----+ | n | 3 | | +----+ | | | | | +---+ | | | | | +---------+ | | | +------------------------------+ | | | | +---------------------------------+ | | |command fib_3 fib_3_1 | | | |+----+ +---------+ +---------+ | | | || [] | | +---+ | | +---+ | | | | |+----+ | n | 3 | | | n | 1 | | | | | | | +---+ | | +---+ | | | | | +---------+ +---------+ | | | +---------------------------------+ | | | | +---------------------------------+ | | |command fib_3 fib_3_1 | | | |+----+ +---------+ +---------+ | | | || [] | | +---+ | | +---+ | | | | |+----+ | n | 3 | | | n | 1 | | | | | | | +---+ | | +---+ | | | | | +---------+ | +---+ | | | | | | x | 1 | | | | | | | +---+ | | | | | +---------+ | | | +---------------------------------+ | | | | +---------------------+ | fib(3)'); disp(boxscope(big,1)) big.fib_3.n = 3; disp(boxscope(big,1)) big.fib_3_2 = []; disp('>fib(3) >fib(2)'); disp(boxscope(big,1)) big.fib_3_2.n = 2; disp(boxscope(big,1)) big.fib_3_2_1 = []; disp('>fib(3) >fib(2) >fib(1)'); disp(boxscope(big,1)) big.fib_3_2_1.n = 1; disp(boxscope(big,1)) big.fib_3_2_1.x = 1; disp(boxscope(big,1)) big=rmfield(big,'fib_3_2_1'); disp('>fib(3) >fib(2) fib(3) >fib(2) >fib(0)'); disp(boxscope(big,1)) big.fib_3_2_0.n = 0; disp(boxscope(big,1)) big.fib_3_2_0.x = 0; disp(boxscope(big,1)) big=rmfield(big,'fib_3_2_0'); disp('>fib(3) >fib(2) fib(3) fib(3) >fib(1)'); disp(boxscope(big,1)) big.fib_3_1.n = 1; disp(boxscope(big,1)) big.fib_3_1.x = 1; disp(boxscope(big,1)) big=rmfield(big,'fib_3_1'); disp('>fib(3)