图1中,y--是先进行运算,再执行自减,--y是先自减岩漏者,再进行运算
故图1中y最后一次循环时y为1,进行while(--y)判断,此时--y先自减 ,变为0,再判断。跳出循环,此时y为0,下面输出时,由于是y--,故先执行输出y,也就是0,再进行自减,y变为-1。
故输出时y的值为0,printf后为-1,答案为搜丛0,D
图2
。。。印刷不规范 (n) 1! = 1*0!, (n)是标号,和上面粗薯的(1)和(2)对应 ,下面的(n+1)一样是标号。分别表示推倒到第n步和第n+1步。
上面红色框体中的都是标号
附加阶乘递归求解C程序
#include
int main()
{
int n;
printf("Input n:");
scanf("%d",&n);
long f(int);
printf("%ld",f(n));
return 0;
}
long f(int n)
{
if(n==0)
return 1;
else
return n*f(n-1);
}
图1中
while是用--y来判断的,这个式子会先执行--y,把y减1了之后的结果来进行判断,
所孙汪以跳出循环时一差并定是y=1时,--y,于是y=0,所以0的结果即是“非”,跳出了循环
之后输出的是“y--”,这个式子的值是先把y的值取出来,也就是0,之后再做y的减1的操作,但输出的结果就则庆仔是0.
图2中
(n) 1! = 1*0!, (n)是行号,和上面的(1)和(2)对应 ,下面的(n+1)一样是行号。表示第几个式子
这是递归调用的一种方法,比如n!=n*(n-1),然后(n-1)!=[(闹肢n-1)!]*[(昌行n-2)!]如此替换下去,直到0,所耐弯哗以得到结果