c语言递归运算求阶乘问题

我疑惑的是if(n==0||n==1)
k=1;执行到这里的时候k不就该等于1了吗?就直接跳出来了,为什么得出来的结果仍然是n的阶乘呢?不说了上图,求学霸指点

img

你没理解递归的含义,递归是从开始到最后执行函数,但是结果是从后往前算,最后k等于1的时候,算的是fac(1)然后就会继续算fac(2)以此类推,直到算到n,这就是迭代,你把迭代和的意思没有理解清楚。如果还是不理解的话,可以私聊我,我给你讲)

这是一个递归,当n不是0或者1时,会调用自身,传入n-1,直到n为0或者1才会返回结果.

k=n*fac(n-1)