函数内部的递归函数

Recursive function inside of a function c++

本文关键字:递归函数 内部 函数      更新时间:2023-10-16

假设我有一个包装器函数,它围绕某个较小的递归函数运行。但是,在调用递归函数之前,包装器会创建递归函数使用的对象。我如何在c++中做到这一点?我只需要让它成为自己的类吗?编辑-我知道我是否可以把它变成一门课,以及如何从那里把它带走-但我的问题是,我需要一门课吗?或者我可以在不上一门课的情况下逃脱?

我举了一个通用的例子来澄清我的问题:

void wrapper()
{
    Object myObject;
    bool recurFun(int x)
    {
        // do some stuff with myObject
        if (some condition){return recurFun(x-1)}
        else {return true}
    }
}

请忽略任何基本的语法类型错误,这不是一个简单的例子,只是为了帮助你们理解我的问题。谢谢!

你可以使用lambdas来获取闭包:

void wrapper()
{
    Object myObject;
    std::function<bool(int)> recurFun;
    recurFun = [&](int x) -> bool {
        // do some stuff with myObject
        if (some condition){return recurFun(x-1)}
        else {return true}
    }
}

当一个函数需要使用某物时,首先应该想到的是将其作为该函数的参数。所以让你的递归函数接受这个对象作为参数,并在递归调用中执行它。包装器函数将自然地设置对象并传递它。