c语言入门问题 图片1帮忙解释一下,图片2(n)!=1*0! (n+1)0!=1不懂,这是什么意思啊

2024-12-14 23:46:05
推荐回答(3个)
回答1:

图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);

}

回答2:

图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)一样是行号。表示第几个式子

回答3:

这是递归调用的一种方法,比如n!=n*(n-1),然后(n-1)!=[(闹肢n-1)!]*[(昌行n-2)!]如此替换下去,直到0,所耐弯哗以得到结果