C++中的递归调用问题

[复制链接]
查看11 | 回复2 | 2009-1-5 21:38:50 | 显示全部楼层 |阅读模式
#include
void fzx(int n)
{
if(n%10!=0)fzx(n/10);
if(n%10!=0)cout<<n%10<<'\t';}
int main(void)
{
int cc;
cc=1563;
fzx(cc);
cout<<endl;
}
谁给解释下具体的调用过程

回复

使用道具 举报

千问 | 2009-1-5 21:38:50 | 显示全部楼层
void fzx(int n) { if(n%10!=0)fzx(n/10);
//只要n%10不为0(也就是说n不为个位数),就将n/10(也就是将n的末位去掉)作为参数,继续递归压栈if(n%10!=0)cout<<n%10<<'\t';} //从最高位开始退栈...
回复

使用道具 举报

千问 | 2009-1-5 21:38:50 | 显示全部楼层
我给你说一下内运行的相信过程吧int cc=1563;fzx(cc);第一次是这样的fzx(1563),也就是说n=1563,由于n%10=3,所以执行if(n%10!=0)fzx(int n);语句,也就是说现在执行的是fzx(3);然后3%10==0条件成立,执行输出n%10的语句他的工作原理就是这样的,如果不明白可以再来问我哦...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行