C++ c++;执行递归函数时应用程序崩溃

C++ c++;执行递归函数时应用程序崩溃,c++,function,recursion,visual-c++,clr,C++,Function,Recursion,Visual C++,Clr,我有一个名为btnTimeIn的按钮,它调用identificationstaff()函数: public: System::Void btnTimeIn_Click(System::Object^ sender, System::EventArgs^ e) { this->identifyStaff(); } 我的identificationstaff()函数正在检查员工/用户是否被识别。如果未识别,则会出现一个带有ok按钮的消息框,如果单击了ok按钮,则会再次调用

我有一个名为
btnTimeIn
的按钮,它调用
identificationstaff()
函数:

public: System::Void btnTimeIn_Click(System::Object^  sender, System::EventArgs^  e) {
        this->identifyStaff();
}
我的
identificationstaff()
函数正在检查员工/用户是否被识别。如果未识别,则会出现一个带有ok按钮的消息框,如果单击了
ok
按钮,则会再次调用
IdentificationStaff()
函数

private: System::Void identifyStaff() {
uint32  flag = 0; // 1:accept or 0:reject
... some code beign skip
flag = 1;

... some code being skip



// accept or if finger print was indentified
     if (flag == 1){
         // Open confirmation form
     }
     else 
     {
        if (MessageBox::Show("Staff unidentified. Please rescan again.",
            "Timestamp", MessageBoxButtons::YesNo,
            MessageBoxIcon::Question) == System::Windows::Forms::DialogResult::Yes) {
            this->identifyStaff();
        }
        else {
            // do nothing. Close the MessageBox
        }
     }
}
现在,我运行应用程序时会这样做:

  • 单击“时间输入”按钮
  • 我把未注册的手指放进了生物识别系统
  • 此时会出现消息框,其中包含重试按钮以重试
  • 我单击消息框中的重试/确定按钮
  • 再次将手指放入生物特征识别(这次是注册的手指)
  • 识别成功,确认表打开
  • 我关闭确认表,然后应用程序崩溃
  • <>我还是C++初学者,还没有深入研究递归函数。< /P> 那么,为什么我会出现这个错误/为什么我的应用程序会崩溃

    提前感谢您分享您的知识

    更新
    我在帖子中更新了我的代码,以显示关于flag变量的信息。

    看起来递归函数的条件从未设置为true,最终导致堆栈溢出验证。你从未修改过
    identificationstaff

    中的
    identifited
    变量。从OP对事件的描述来看,Someprogrammerdude似乎不是这样。这就是我试图做的,一个无限递归,如果可能的话。至少,你需要提供崩溃堆栈。你试图做的可能不是发生了什么?如果您在调试器中逐行遍历代码,逐步执行递归调用,它是否能按预期工作?是否会设置
    identified
    。这就是为什么崩溃堆栈是典型的。