航海选手 2015-01-13 09:33 采纳率: 85.7%
浏览 1780
已采纳

一个经典的递归算法,谁能告诉我他的运算流程。我自己是想不通0.0

#include
using namespace std;

void reverse();
int main()
{
printf("enter a sentence: ");
reverse();
return 0;
}

void reverse()
{
char c;
scanf("%c",&c);

if(c != '\n')
{
    reverse();   //这一步以后转到哪里执行语句
    printf("%c",c);

}

}

  • 写回答

5条回答 默认 最新

  • Jackery_Shh 领域专家: 系统编程技术领域 2015-01-13 10:03
    关注

    如果你follow过code,通过callstack可以看出其执行过程以及运算流程;在这里简单的解释一下:在main()中,第一次调用reverse(),进入reverse()后,定义了一个char变量(是放在栈中的),接下来检测输入是否为换行,如果不换行(这里应该注意的是此处局部变量的生命周期并未结束,所以保存在栈中),就继续再次执行reverse();直到遇到换行;接下来的输出过程就是刚才定义的变量的出栈过程。这里应该注意的是c变量不是同一个变量;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?