C++中的递归调用问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 12:39:04
#include <iostream.h>
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;

}

谁给解释下具体的调用过程

我给你说一下内运行的相信过程吧
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的语句
他的工作原理就是这样的,如果不明白可以再来问我哦

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';} //从最高位开始退栈