cpp跳出所有递归层的方法?

问题遇到的现象和发生背景

cpp跳出所有递归层的方法有哪些呢?网上查不到cpp的相关方法

用代码块功能插入代码,请勿粘贴截图

不能直接跳出,只能加个标志量。比如递归函数加个参数表示终止,或者加个全局变量
比如

int a(int n,int flag)
{
    if(flag == 1)
        return 0;
   flag = func(....);
   return a(n,flag);
}

如果是直接结束程序,可以使用exit(0);
不然真的没办法,只能做标记,有标记就return;

实在不行就用goto吧

比较粗暴的方法是使用异常, 但不推荐.

#include <chrono>
#include <iostream>
#include <thread>

auto func(int n) -> int;

int flag = 0;

auto main() -> int
{
    std::thread thrd([]() {
        std::this_thread::sleep_for(std::chrono::seconds(1));
        flag = 1;
    });

    thrd.detach();

    int rest = 0;

    try
    {
        rest = func(1000);
    }
    catch (int &n)
    {
        std::cout << "out: " << n << std::endl;
    }

    return 0;
}

auto func(int n) -> int
{
    if (n == 0)
    {
        return 0;
    }

    n -= 1;
    std::this_thread::sleep_for(std::chrono::microseconds(1));

    if (flag == 1)
    {
        throw n;
    }
    return func(n);
}