Recursion

fib(n) with log.

fib(n) with log.

Goal

Log fib(6) = 8.

@external("env", "log")
declare function log(n: i32): void;

@external("env", "logStr")
declare function logStr(s: string): void;

function fib(n: i32): i32 {
  if (n <= 1) return n;
  return fib(n - 1) + fib(n - 2);
}
export function main(): void {
  log(fib(6));
}
@external("env", "log")
declare function log(n: i32): void;

@external("env", "logStr")
declare function logStr(s: string): void;

function fib(n: i32): i32 {
  if (n <= 1) return n;
  return fib(n - 1) + fib(n - 2);
}
export function main(): void {
  log(fib(0));
  log(fib(1));
  log(fib(5));
}
@external("env", "log")
declare function log(n: i32): void;

@external("env", "logStr")
declare function logStr(s: string): void;

function fact(n: i32): i32 {
  if (n <= 1) return 1;
  return n * fact(n - 1);
}
export function main(): void {
  log(fact(5));
}
@external("env", "log")
declare function log(n: i32): void;

@external("env", "logStr")
declare function logStr(s: string): void;

function fib(n: i32): i32 {
  if (n <= 1) return n;
  return fib(n - 1) + fib(n - 2);
}
export function main(): void {
  log(fib(7));
}