A recursive function calls itself with a smaller input.

Recursive Count

recursive_count.lua
local start = 

local function count_down(value)
  if value <= 0 then
    return 0
  end
  return 1 + count_down(value - 1)
end

local steps = count_down(start)

print("start=" .. start)
print("steps=" .. steps)
local start = 

local function count_down(value)
  if value <= 0 then
    return 0
  end
  return 1 + count_down(value - 1)
end

local steps = count_down(start)

print("start=" .. start)
print("steps=" .. steps)
local start = 

local function count_down(value)
  if value <= 0 then
    return 0
  end
  return 1 + count_down(value - 1)
end

local steps = count_down(start)

print("start=" .. start)
print("steps=" .. steps)
smaller call Recursion needs a stop case and a recursive case that moves toward it.