1、打開VC6.0軟件,新建一個C語言的項目:
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:空間域名、網(wǎng)絡空間、營銷軟件、網(wǎng)站建設、拉孜網(wǎng)站維護、網(wǎng)站推廣。
2、接下來編寫主程序,首先定義用來求階乘的遞歸函數(shù)以及主函數(shù)。在main函數(shù)里定義變量sum求和,調(diào)用遞歸函數(shù)fact(),并將返回值賦予sum,最后使用printf打印sum的結果,主程序就編寫完了:
3、最后運行程序,觀察輸出的結果。以上就是C語言使用遞歸求階乘的寫法:
舉例:用遞歸方法求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反回來的。
#include stdio.h
void f(int);
main()
{
int n;
unsigned long fac;
scanf("%d", n);
fac=f(n);
if(fac)
printf("%d",fac);
}
void f(int n)
{
if(n=0||n10)
{
printf("error");
return 0;
}
else if(n==1) return 1;
else return n*f(n-1);
}
思路:遞歸求階乘函數(shù),如果輸入的參數(shù)等于1則返回1,否則返回n乘以該函數(shù)下次遞歸。
參考代碼:
#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));
}
分享標題:c語言遞歸求階乘函數(shù)法 C語言遞歸求階乘
分享網(wǎng)址:http://www.chinadenli.net/article30/doohgpo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設計、定制網(wǎng)站、網(wǎng)站維護、搜索引擎優(yōu)化、Google、面包屑導航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)