6 个版本
0.2.4 | 2023 年 12 月 7 日 |
---|---|
0.2.3 | 2023 年 12 月 6 日 |
0.2.2 | 2023 年 1 月 30 日 |
0.2.1 | 2022 年 8 月 18 日 |
0.1.1 | 2021 年 9 月 23 日 |
#2 in #fibonacci
23KB
635 行代码(不包括注释)
- AST
def fibonacci(n: Integer) {
fibonacci_helper(n, 0, 1)
}
def fibonacci_helper(n, previous, current)
{
if n == 0 { previous }
if n == 1 { current }
fibonacci_helper(n - 1, current, previous + current);
}
- HIR
function fibonacci
(
state: small_int,
%n: auto,
^return: auto,
)
{
0:
%tmp1 = call fibonacci_helper (%n, 0, 1);
}
function fibonacci_helper
(
%n: auto,
%previous: auto,
%current: auto,
^return: auto,
)
{
function.begin:
%var1 = binary == (%n, 0);
jump 1 if %var1;
jump 2;
if1.begin:
^return(%previous);
if1.end:
%var2 = binary == (%n, 1);
jump 3 if %var2;
jump 4;
if2.begin:
^return(%current);
if2.end:
%tmp3 = binary - (%n, 1);
%tmp4 = binary + (%previous, %current);
%tmp5 = %n - 1;
%tmp6 = %current;
%tmp7 = ninary + (%previous, %current);
%n = %tmp5;
%previous = %tmp6;
%current = %tmp7;
jump 0;
}
依赖项
~3.5–5MB
~106K SLoC