全局变量的值不能被局部函数修改吗?

最近在学二叉树,遇到了一道题,求二叉树b中值为x的节点的层号。
我就定义了一个全局变量Lno表示层号,每次进入下一层就Lno++,返回上一层就Lno--
如果找到就将Lno的值返回。通过cout语句发现Lno的值是正确的,但是为什么每次返回Lno的值都变回1
了呢?

//查找值为x的节点的层数
int Lno = 1;
int Findbyvalue(BTnode* root,char ch)
{
    if (root != NULL)
    {
        //先序查找
        if (root->data == ch)
        {
            cout << Lno;
            cout << root->data;
            return Lno;
        }
        ++Lno;
        Findbyvalue(root->lchild, ch);
        Findbyvalue(root->rchild, ch);
        --Lno;
    }
}
int main()
{
    BTnode node1 = { 'A',NULL,NULL };
    BTnode node2 = { 'B',NULL,NULL };
    BTnode node3 = { 'C',NULL,NULL };
    BTnode node4 = { 'D',NULL,NULL };
    BTnode node5 = { 'E',NULL,NULL };
    BTnode node6 = { 'F',NULL,NULL };
    BTnode node7 = { 'G',NULL,NULL };
    BTnode node8 = { 'H',NULL,NULL };
    node1.lchild = &node2;
    node1.rchild = &node6;
    node2.rchild = &node3;
    node3.lchild = &node4;
    node3.rchild = &node5;
    node6.rchild = &node7;
    node7.lchild = &node8;
    cout<<Findbyvalue(&node1, 'H');
    cout << Lno;
}

img