思路:遞歸求階乘函數(shù),如果輸入的參數(shù)等于1則返回1,否則返回n乘以該函數(shù)下次遞歸。
十余年的龍海網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都營銷網(wǎng)站建設的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整龍海建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)公司從事“龍海網(wǎng)站設計”,“龍海網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
參考代碼:
#includestdio.h
int?fun(int?n)
{
if(n==1||n==0)?return?1;//如果參數(shù)是0或者1返回1
return?n*fun(n-1);//否則返回n和下次遞歸的積
}
int?main()
{
int?n;
scanf("%d",n);
printf("%d\n",fun(n));
return?0;
}
/*
5
120
*/
n的階乘,就是從1開始乘到n,即1*2*3*...*(n-1)*n。
即n!=1*2*3*...*(n-1)*n。
而(n-1)!=1*2*3*...*(n-1)。
所以可以得出,n!=(n-1)!
*
n。
由這個概念,可以得出遞歸求階乘函數(shù)fact的算法:
1
如果傳入?yún)?shù)為0或1,返回1;
2
對于任意的n,返回n*fact(n-1)。
代碼如下:
int fact(int n)
{
if(n == 0 || n == 1) return 1;
return n*(fact(n-1));
}
舉例:用遞歸方法求n;
#includestdio.h
int main()
{
int n;
int y;
printf("input a integer number:");
scanf("%d",n);
y=fac(n);
printf("%d!=%d\n",n,y);
return 0;
}
int fac(int n)
{
int f;
if(n0)
printf("n0,data error!");
else if(n==0||n==1)
f=1;
else
f=fac(n-1)*n;
return(f);
}
擴展資料:
return用法:
return返回一個數(shù)值的意思就是把returnlt;表達式gt;后面表達式的值返回給調(diào)用他的函數(shù)。舉個例子:
int sum(int i,int j)
{
return i+j;
printf("這個語句不會被執(zhí)行,因為該子函數(shù)執(zhí)行到上面的return語句就無條件結束了");
}
main()
{
int a=10,b=11,c;
c=sum(a,b);
printf("%d",c);
}
程序的輸出為:
21
這個21從何而來呢main函數(shù)調(diào)用sum(a,b)函數(shù)時將a的值賦給i,b的值賦給j,上面說了return i+j;會計算i+j的值也就是結果等于21,并將21帶回給調(diào)用它的函數(shù),即c=sum(a,b);相當于c=21,這個21就是由sum(a,b)中的return反回來的。
1、打開VC6.0軟件,新建一個C語言的項目:
2、接下來編寫主程序,首先定義用來求階乘的遞歸函數(shù)以及主函數(shù)。在main函數(shù)里定義變量sum求和,調(diào)用遞歸函數(shù)fact(),并將返回值賦予sum,最后使用printf打印sum的結果,主程序就編寫完了:
3、最后運行程序,觀察輸出的結果。以上就是C語言使用遞歸求階乘的寫法: