如果 NUM=4,也就是走 else
4 *box(3)那box(3)等于什么呢?box(3)按LZ的理解就是 NUM=3了
再次调用函数计算 NUM=3 又走else 3*box(2),同上计算box(2);
反复这么算 就是24.
其实我也是菜鸟,不知道这么做对不对。
结果是4 * 3 * 2 * 1 24没错的。
你现在这个方法是一个递归方法,简单的说就是自己会调用自己。
出口是num<=1,当这个时候都才会计算出最后的结果。
第一次Return 4 * box(3), box(3) = 3 * box(2) , box (2) = 2 * box(1) ,box(1) = 1 ,
所以是4 * 3 * 2 * 1
就是24啊~~ 你用的是递归~~ 1*2*3*4=24~~
逻辑是 4*box(3)==4*(3*box(2))==4*(3*(2*box(1)))==4*3*2*1==24
应该是4*3*2*1,在过程中调用自己,这叫递归
你还是不明白什么是递归吧 自己画画就知道了