本文主要是介绍解决递归函数需要返回值时的蛋疼问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
int get_mid(node* &a,int n)
{if(a==NULL);else{get_mid(a->lch,n);con++;if(con==(n+1)/2){ k=a->x;return k; //这里return值返回到上一层 递归最后会丢失值}get_mid(a->rch,n);}
}
中序遍历时,我想在达到目的时直接结束递归,但是return只是向上一层返回,最后的返回值不是中间return出来的。因为递归时用栈来存的,所以最后的返回值时不一样的。
可以用全局变量把中间想要的东西都存下来,或者设置一个flag在适时的时候跳出。或者写成非递归的形式,用栈来实现队规操作。
最近莫名其妙的菜,太久不学习,以前的东西全忘了,难顶。
这篇关于解决递归函数需要返回值时的蛋疼问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!