n的階乘,就是從1開始乘到n,即1*2*3*...*(n-1)*n。
作為一家“創(chuàng)意+整合+營銷”的成都網站建設機構,我們在業(yè)內良好的客戶口碑。成都創(chuàng)新互聯(lián)公司提供從前期的網站品牌分析策劃、網站設計、網站建設、網站設計、創(chuàng)意表現(xiàn)、網頁制作、系統(tǒng)開發(fā)以及后續(xù)網站營銷運營等一系列服務,幫助企業(yè)打造創(chuàng)新的互聯(lián)網品牌經營模式與有效的網絡營銷方法,創(chuàng)造更大的價值。
即n!=1*2*3*...*(n-1)*n。
而(n-1)!=1*2*3*...*(n-1)。
所以可以得出,n!=(n-1)!
*
n。
由這個概念,可以得出遞歸求階乘函數fact的算法:
1
如果傳入參數為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));
}
#include?stdio.h
int?fun(int?n){
int?k;
if(n==0)?k=1;
else?k=n*fun(n-1);
return?k;
}
//以上為運用遞歸求階乘的函數,以下為主函數
void?main()
{
int?n;
scanf("%d",n);
printf("%d!=%d",n,fun(n));
}
運行示例:
1、打開VC6.0軟件,新建一個C語言的項目:
2、接下來編寫主程序,首先定義用來求階乘的遞歸函數以及主函數。在main函數里定義變量sum求和,調用遞歸函數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返回一個數值的意思就是把returnlt;表達式gt;后面表達式的值返回給調用他的函數。舉個例子:
int sum(int i,int j)
{
return i+j;
printf("這個語句不會被執(zhí)行,因為該子函數執(zhí)行到上面的return語句就無條件結束了");
}
main()
{
int a=10,b=11,c;
c=sum(a,b);
printf("%d",c);
}
程序的輸出為:
21
這個21從何而來呢main函數調用sum(a,b)函數時將a的值賦給i,b的值賦給j,上面說了return i+j;會計算i+j的值也就是結果等于21,并將21帶回給調用它的函數,即c=sum(a,b);相當于c=21,這個21就是由sum(a,b)中的return反回來的。
標題名稱:遞歸調用求階乘函數c語言 遞歸求階乘和c語言
文章起源:http://muchs.cn/article44/doeggee.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供、服務器托管、外貿建站、標簽優(yōu)化、Google、靜態(tài)網站
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)