所谓递归,就是自己调用自己
拿你这代码说,先说5的阶乘是:5*4*3*2*1;
那么在用递归之前,先想想递归的出口,这里的出口是if(n == 1) { return 1;},为什么呢?
因为5*4*3*2*1,我们要从5往后找,找到1就算完成了
getN(5) ---> 先判断5是不是等于1,不等于所以找getN(5-1) ---> 判断4是不是等于1,不等于所以找getN(4-1)
---> 判断3是不是等于1,不等于所以找getN(3-1) ---> 判断2是不是等于1,不等于就找getN(2-1) , 此时2-1==1,
那么 return 1,就可以得到getN(1) == 1 , getN(2) = 2 * get(1) = 2 , getN(3) = 3 * get(2) = 6 , getN(4) = 4 * getN(3) = 24 , getN(5) = 5 * getN(4) = 120! |