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);
}