fib benchmark修改

This commit is contained in:
2026-01-22 23:51:13 +08:00
parent da5047c729
commit 3ad32e1615

View File

@@ -1,5 +1,6 @@
import std.io; import std.io;
import std.time; import std.time;
import std.value;
func benchmark(fn: Function, arg: Any) -> Null func benchmark(fn: Function, arg: Any) -> Null
{ {
@@ -58,8 +59,26 @@ func fib(x)
return fib(x - 1) + fib(x - 2); return fib(x - 1) + fib(x - 2);
} }
const n := 28; func fib_tail(n, a=0, b=1) {
if n == 0 { return a; }
if n == 1 { return b; }
return fib_tail(n-1, b, a+b);
}
const n := 30;
io.println("! fib(" + value.string_from(n) + "):");
benchmark(fib, n); benchmark(fib, n);
io.print("\n\n");
io.println("! fib_memo(" + value.string_from(n) + "):");
benchmark(fib_memo, n); benchmark(fib_memo, n);
benchmark(fib_iter, n); io.print("\n\n");
io.println("! fib_iter(" + value.string_from(n) + "):");
benchmark(fib_iter, n);
io.print("\n\n");
io.println("! fib_tail(" + value.string_from(n) + "):");
benchmark(fib_tail, n);
io.print("\n\n");