草庐IT

递归图

全部标签

c++ - 这个递归函数是如何自动转化为迭代函数的呢?

我正在阅读下面的尾递归Tailrecursionreferstoarecursivecallatthelastline.Tailrecursioncanbemechanicallyeliminatedbyenclosingthebodyinawhileloopandreplacingtherecursivecallwithoneassignmentperfunctionargument.例如voidprint(Iteratorstart,Iteratorend,ostream&out=cout){if(start==end)return;out通过上述规范转换为迭代voidprint(

c++ - 如何使用递归 QMutex

我正在尝试使用递归QMutex,我阅读了QMutex类引用,但我不明白如何去做,有人可以给我一个例子吗?我需要一些方法来锁定可以在调用锁定方法之后或之前解锁的QMutex。如果递归互斥不是这种方式,还有其他方式吗? 最佳答案 要创建递归QMutex,您只需在构建时传递QMutex::Recursive,例如:QMutexmutex(QMutex::Recursive);intnumber=6;voidmethod1(){mutex.lock();number*=5;mutex.unlock();}voidmethod2(){mute

c++ - 如何从 C++ 中自己的定义递归调用类成员函数?

我是C++的新手,我需要一个类成员函数来从它自己的定义中调用它自己,就像这样-classMyClass{public://orprivate:?//Somecodehere//...voidmyfunction();//...};voidMyClass::myfunction(){//Somecodehere//...//CallMyClass::myfunction()here,buthow?//...}但我不知道它的正确语法以及如何在不创建通常像这样完成的对象的情况下自行调用它-object_name.member_function(),如果可能的话?而且,如果myfunction

c++ - 为什么我的 C++ 编译器允许递归调用 main?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Isitlegaltorecurseintomain()inC++?#includeusingnamespacestd;intmain(){staticintvar=5;std::coutgcc编译代码http://ideone.com/lIp3A.我知道main不能在C++的main内部使用。这段代码如何编译?

c++ - 什么时候返回递归函数?

我有一个关于return和递归函数的问题。这又是基于我目前正在研究的二叉树。代码是voidTree::display(){if(!root_)return;display_r(root_);}voidTree::display_r(Tree*node){if(0==node)return;display_r(node->left_);std::coutvalue_right_);}这是工作代码。编译和运行没有失败,从最小到最大打印数字。然而,过去并非如此。上面的代码是先用写的returndisplay_r(node->left_);std::coutvalue_right_);这没有用

c++ - 递归函数不能内联吗?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:Canarecursivefunctionbeinline?使递归函数内联的权衡是什么。

c++ - G++ 编译器不允许递归?

我创建了一个使用递归的非常简单的程序。我正在使用g++编译器。我可以编译它,但是当我尝试运行它时,我收到一条错误消息,指出SEGMENTATIONFAULT。这是我的代码:#includeusingnamespacestd;intRecurse(int);intmain(intargc,char*argv[]){Recurse(10);cout 最佳答案 在递归调用中,您使用的是后缀--(numTimes--),而不是前缀版本(--numTimes)。结果,numTimes的值在递归调用后递减。这意味着Recurse被10无限调用。

c++ - N选K、K-N、K-2N等,递归中递归

我知道如何使用递归来生成所有可能的组合,即N选择K。但是如何创建所有可能的N/K组K?N当然总是可以被K整除。澄清一下:例如,如果N是20,K是4,那么我想生成所有可能的五组四。如果,比方说,N包含1,2,3...20而K是4,那么这样的分组是{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16},{17,18,19,20}。假设N比较小,递归可行我觉得这是一个递归中的递归问题,因为生成所有可能的单组四(又名N选择K)需要递归,然后生成下一组四变成N-4选择K,然后下一个N-8选择K,等等。但是我在实现这个时遇到了问题...有什么帮助吗?

c++ - 如何避免简单的递归模板类型定义

我有以下简单的问题:A类templateParser它定义了一个ModuleType作为Module.我想将解析器类型注入(inject)模块,以便能够从其中的解析器中再次提取几种类型。这很方便,因为Module中只需要一个模板参数。但是如果解析器需要一些在模块中定义的类型,例如OptionsType,问题就来了。,在Parser中访问它通过使用声明usingModuleOptions=...显然不适用于派生类的实例化ParserDerived.错误:error:notypenamed‘DType’in‘structParserDerived’usingDType=typenamePa

c++ - 尝试构建任意深度树状结构的可变模板实例化中的无限递归

我正在对可变参数进行一些实验,我无意中遇到了一个我无法找到解决方案的问题-基本上我正在尝试构建一个包含任意数据类型组件的树-这里是一些代码:templatestructSeqExpression{constA&first;constB&then;};templateSeqExpressionmake_seq(constA&a,constB&b){return{a,b};}templateautomake_seq(constA&first,constB&second,T...rest)->decltype(make_seq(make_seq(first,second),rest...))