Son aktivite 1746848998

Revizyon 26ca0c144383e33df0753b4a8b2666562eb235c5

novaweb.nv Ham Playground
1Let's write a program that computers the fibonacci sequence. First we must define the base cases of the function. for the sake of simplicity, n <= 0 returns zero.
2
3The base case for n <= 0:
4 if n <= 0 then
5 return 0
6 end
7
8The base case for 1:
9 if n == 1 then
10 return 1
11 end
12
13Now for a recursive case. For this implementation, we will stick with the original formula rather than optimizing it.
14
15The recursive case for the fibonacci sequence:
16 return fib(n - 1) + fib(n - 2)
17
18Finally, lets assemble this into a Lua function.
19
20The fibonacci function:
21 local function fib(n)
22 @ The base case for n <= 0
23 @ The base case for 1
24 @ The recursive case for the fibonacci sequence
25 end
26
27our program:
28 @ The fibonacci function
29 print(fib(10))
30
31do:
32 compile
33
34source:
35 @ our program
36
37---
38do:
39 %action
40---
41%action
42
43---
44dereference
45from:
46 %reference
47%reference:
48 %code
49---
50dereference
51from:
52 %reference
53spent:
54 %code
55compiled code:
56 %code
57
58---
59dereference
60from:
61 %reference
62---
63restore dereference
64from:
65 %reference
66
67---
68restore dereference
69from:
70 %reference
71spent:
72 %code
73---
74restore dereference
75from:
76 %reference
77%reference:
78 %code
79
80---
81restore dereference
82from:
83 %reference
84---
85compile
86
87
88---
89compile
90source:
91 @ %reference
92---
93dereference
94from:
95 %reference
96needs another pass:
97 yes
98
99---
100compile
101source:
102 %code
103---
104compile
105compiled code:
106 %code
107
108---
109compile
110needs another pass:
111 yes
112---
113next pass
114
115---
116compile
117---
118compilation finished
119
120---
121next pass
122compiled code:
123 %code
124---
125next pass
126source:
127 %code
128
129---
130next pass
131---
132compile
133
134---
135compilation finished
136compiled code:
137 %code
138---
139compilation finished
140out:
141 %code
142
143---
144compilation finished
145---
146print code
147
148---
149print code
150out:
151 %tuple
152---
153print code
154@print:
155 %tuple
156