一般用递归要遵循两个个要求: 1. 存在一个终止递归的条件 2. 递归是朝着终止递归调用方向发展的 比如说最简单的阶乘: int cal(int n) { // 终止递归,要求1 if(n == 0) return 1; // 递归调用,朝着终止递归的方向发展,如果你把"cal(n-1)"----->"cal(n + 1)"试试?肯定overstack…… else return n * cal(n - 1) }