这是阶乘函数,它是一个递归函数。下面分析这个程序的运行过程:
首先,函数whatfunction被调用,并且将实参4传进去,实参4替换形参variable。这时if语句判断variable不是0,所以进入第一个递归调用:返回4乘whatfunction(3)。
这时,实参3将替换形参variable,if语句判断variable不是0,所以进入第二个递归调用:返回3乘whatfunction(2)。
这时,实参2将替换形参variable,if语句判断variable不是0,所以进入第三个递归调用:返回2乘whatfunction(1)。
这时,实参1将替换形参variable,if语句判断variable不是0,所以进入第四个递归调用:返回1乘whatfunction(0)。
这时,实参0将替换形参variable,if语句判断variable是0,所以返回1,递归函数进入回归。
函数回到return 1 * whatfunction(0),其值为1*1=1,函数回归返回1,回到return 2 * whatfunction(1),其值为2*1=2,函数回归返回2,回到return 3 * whatfunction(2),其值为3*2=6,函数回归返回6,回到return 4 * whatfunction(3),其值为4*6=24,函数回归返回24,此时由于没有更多等待返回值的递归调用,函数运行终止。
输出24,就是4!——返回4*3*2*1==24。