一小段递归的代码, 求解释,该如何处理
一小段递归的代码, 求解释C/C++ code#include stdio.hvoid rev(void) {char cc getchar()if (c
一小段递归的代码, 求解释
C/C++ code#include <stdio.h>void rev(void) { char c; c = getchar(); if (c == '#') { printf("%c", c); } else { rev(); printf("%c", c); }}int main(void) { rev(); printf("\n"); return 0;}
请详细解释一下这恶心的递归
[解决办法]“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出
[解决办法]输入一个字符,如果是'#'就输出并且结束,如果不是的话,输出该字符并进行下一次的输入。
[解决办法]一直让你输入,直到输入到#为止,打印出#,然后倒叙打印之前的输入
[解决办法][解决办法]补充:每次输入不是#的时候就继续调用rev(),直到#,打印#。
然后返回到上一个else打印出最后输入的非#字符。