code: def test_recursion():
      """
      Program:
         let f(n: i32) -> i32 = {
            m = (n * 2)
            if (n == 0) {
                return m;
            } else {
                return m + f(n - 1);
            }
         }
         f(5);
      """
      mod = tvm.IRModule()
      i64 = relay.TensorType((), "int64")
      f = relay.GlobalVar("f")
      n = relay.Var("n", i64)
      m = n * relay.const(2, "int64")
      funcbody = relay.If(
          relay.equal(n, relay.const(0, "int64")),
          m,
          m + f(n - relay.const(1, "int64")),
      )
      value = relay.Function([n], funcbody, i64, [])
      mod[f] = value
      check_eval(f(relay.const(5, "int64")), 30.0, mod=mod)
      old_f = mod[f]
      mod = transform.ToANormalForm()(mod)
      f = mod[f]
      check_eval(f(relay.const(5, "int64")), 30.0, mod=mod)
  
imports: import pytest
  import sys
  import numpy
  import tvm
  import tvm.testing
  from tvm import te
  from tvm import relay
  from tvm.relay.analysis import detect_feature
  from tvm.relay import op, create_executor, transform
  from tvm.relay.prelude import Prelude
  from tvm.relay.testing import count
  from tvm.relay.analysis import Feature
label_desc: Use image node_id 7 for calling a global function with example usage: test_recursion() without return types