#include<stdio.h>
#include<stdlib.h>
void cj(int n);
void main()
{
int n=10;
cj(n);
}
void cj(int n)
{
printf("%d\t",n);
if(n>0)cj(--n);
if(n>0)cj(--n);
}
这个程序是先执行完第一个递归在执行第2个么?搞不懂啊?
不是有2个cj(n--)么,是怎么递归的啊??
追答你那个写错了 应该是只有一个重复的语句 ..
递归的的思想就是 自己调用自己 ..
一开始主程序中调用cj(10) ..
然后程序执行cj(10)
{
cj(9); //这里 cj()函数调用了自己,参数从10变成了9,然后cj(9)调用cj(8) 以此类推 ..
这就是递归,感觉就像镜子中的镜子一样,一层一层的 ..
}
补充:
不好意思 没写错;
就是cj(10) 运行到cj(0)之后 ..
再从cj(10) 运行到cj(0) ..
是先运行上面那个递归,在运行下面那个??
追答对 顺序是这样 ..