函數(shù)的遞歸調用
一個函數(shù)在它的函數(shù)體內調用它自身稱為遞歸調用。 這種函數(shù)稱為遞歸函數(shù)。C語言允許函數(shù)的遞歸調用。在遞歸調用中, 主調函數(shù)又是被調函數(shù)。執(zhí)行遞歸函數(shù)將反復調用其自身。 每調用一次就進入新的一層。例如有函數(shù)f如下:
int f (int x)
{
int y;
z=f(y);
return z;
}
這個函數(shù)是一個遞歸函數(shù)。 但是運行該函數(shù)將無休止地調用其自身,這當然是不正確的。為了防止遞歸調用無終止地進行, 必須在函數(shù)內有終止遞歸調用的手段。常用的辦法是加條件判斷, 滿足某種條件后就不再作遞歸調用,然后逐層返回。 下面舉例說明遞歸調用的執(zhí)行過程。
[例5.9]用遞歸法計算n!用遞歸法計算n!可用下述公式表示:
n!=1 (n=0,1)
n×(n-1)! (n>1)
按公式可編程如下:
long ff(int n)
{
long f;
if(n<0) printf("n<0,input error");
else if(n==0||n==1) f=1;
else f=ff(n-1)*n;
return(f);
}
main()
{
int n;
long y;
printf("\ninput a inteager number:\n");
scanf("%d",&n);
y=ff(n);
printf("%d!=%ld",n,y);
}
long ff(int n)
{ ……
else f=ff(n-1)*n;
……
}
main()
{ ……
y=ff(n);
……
}
相關推薦:計算機等考二級C語言備考:C語言/C++編譯過程北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |