永发信息网

关于C++中的递归问题

答案:3  悬赏:20  手机版
解决时间 2021-04-07 21:15
  • 提问者网友:一抹荒凉废墟
  • 2021-04-07 07:42
关于C++中的递归问题
最佳答案
  • 五星知识达人网友:第四晚心情
  • 2021-04-07 09:02
递归是一个栈操作,后进先出,一上面为例,一开始执行inverp(char*a),*a指向h,运行这个方法的时候,方法内又运行了inverp(a+1)(注:此时还没有cout),于是系统把当前方法压入栈中,去执行inverp(a+1),即inverp(char*)(注:此时指针指向e),如此一直入栈,直到(!*a)这个条件满足时遇到了return开始出栈了,最后入栈的是!所以它先执行cout把结果输出来了,以此类推,所以字符倒着输出来了
全部回答
  • 1楼网友:往事埋风中
  • 2021-04-07 10:44
递归是用堆栈实现的
也就是 先进后出 最后进去最先出来
代码模拟把 Hello 依次推进去
再依次出来就成了 反序了
  • 2楼网友:夜风逐马
  • 2021-04-07 10:11
因为是递归调用啊,调用到最里面的函数时a是!,输出来,然后跳到前一个函数,输出o,以此类推,所以是反的。如果你要正常输出地话把cout写在递归调用前面。
int inverp(char*a)
{cout<<*a;
if(!*a) return 0;
inverp(a+1);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯