在 C 中使用带有 while 循环的递归的阶乘程序。大家好,感谢您的宝贵回复。
你们都说使用(如果条件而不是while)。正确的我接受你的建议。那我为什么不使用 while 来使用递归函数查找阶乘。
有人说
while(n>1)
是无限循环。但是在这个程序中,函数本身n
的值会减少。fact(n-1)
现在在这个程序中,我在 while 循环之后放了一个printf()
and来知道. and函数仅在while 条件变为 false 时执行。getch()
n
printf()
getch()
当我运行这个程序时,printf()
函数和getch()
函数重复执行,printf()
函数返回n
值 = 1。所以我确定 的值n
是递减的。那为什么这个程序会一次又一次地执行while循环呢?
- 在所有函数中,return 语句是最后一个函数终止语句。当执行到达 return 语句时,执行从函数终止并返回到被调用函数的下一行。但是在这个程序中,在执行到达 return 语句后,它将重复执行相同的函数。这是为什么?
注意:我使用的是 Turbo C 3.0 来运行这个程序,
#include<stdio.h>
int fact(int n)
{
int x=1;
while(n>1)
{
x=n*fact(n-1);
}
printf("N value after the while loop:%d",n);
getch();
return(x);
}
void main()
{
int n,fact1;
scanf("%d",&n);
fact1=fact(n);
printf("%d",fact1);
}