作业帮 > 综合 > 作业

void p(int n) { if (n>1 &&n%2==1) p(n-1); printf(“%2d”,n); i

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/08 18:47:30
void p(int n) { if (n>1 &&n%2==1) p(n-1); printf(“%2d”,n); if (n>1 &&n%2==0) p(n-1); }
用p(5)调用的结果是:4 2 1 3 5
4 2 1 可以理解
但是 3 5
这个很好理解,虽然是个递归调用,你也可以把它想象成堆栈,大于1的奇数入栈,偶数输出,到1递归结束,入栈的奇数分别出栈
第一次调用
5入栈,调用p(4)
输出4,调用p(3)
3入栈,调用p(2)
输出2,调用p(1)
输出1,递归结束
3出栈,输出3
5出栈,输出5
就完了