问个递归调用的问题
请问下面两段代码,为啥是其对应的输出结果呢?
1、输出:120(重点想问n--的执行顺序,以及为什么这样)
int step(int n) { if (n > 1) { return n-- * step(n); } else { return 1; } } int main(int argc, char* argv[]) { int a = step(5); printf("%d", a); return 0; }
2、输出:24
int step(int n) { if (n > 1) { return n * step(--n); } else { return 1; } } int main(int argc, char* argv[]) { int a = step(5); printf("%d", a); return 0; }