递归求阶乘 代码一: int Jc_(int a) { if (a <= 1) { return 1; } return Jc_(--a)*a; } 代码二: int Jc_(int a) { if (a <= 1) { return 1; } return Jc_(a-1)*a; } 一个很简单但困扰了我一会儿的问题: 一开始写的是代码一,但结果总是少乘第一个数。 原因:自减运算会改变自身的值,导致最后归在一起是a的值为1.