首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一小段递归的代码, 求解释,该如何处理

2012-06-02 
一小段递归的代码, 求解释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里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出

[解决办法]
输入一个字符,如果是'#'就输出并且结束,如果不是的话,输出该字符并进行下一次的输入。
[解决办法]
一直让你输入,直到输入到#为止,打印出#,然后倒叙打印之前的输入
[解决办法]
探讨
那么答案是什么呢? 比如输入 1234#567

[解决办法]
补充:每次输入不是#的时候就继续调用rev(),直到#,打印#。
然后返回到上一个else打印出最后输入的非#字符。

热点排行