使用while循環在C中使用遞歸的階乘程序。大家好,謝謝你的寶貴回覆。在while循環中使用遞歸函數的階乘程序
你們都說過使用(如果條件而不是while)。其正確的我接受你的建議。那麼爲什麼我不使用遞歸函數來尋找階乘。
有人說
while(n>1)
是一個無限循環。但是在這個程序中n
的值在fact(n-1)
函數本身中遞減。現在在這個程序中,我在while循環之後輸入printf()
和getch()
以知道n
的值。僅當while條件變爲false時,printf()
和getch()
函數纔會執行。
當我運行此程序的printf()
功能和getch()
功能重複執行和printf()
函數的返回值n
= 1。所以我確定的n
值遞減。那麼爲什麼這個程序一次又一次地執行while循環呢?
- 在所有函數中,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);
}