首先明確題目要求:遞歸函數(shù),求n!
創(chuàng)新互聯(lián)公司專注于海南企業(yè)網(wǎng)站建設,響應式網(wǎng)站,商城網(wǎng)站開發(fā)。海南網(wǎng)站建設公司,為海南等地區(qū)提供建站服務。全流程按需制作網(wǎng)站,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務
遞歸函數(shù)的含義:
編程語言中,函數(shù)Func(Type a,……)直接或間接調(diào)用函數(shù)本身,則該函數(shù)稱為遞歸函數(shù)。
n!表示階乘函數(shù),即1*2*3*……*n
下面給出代碼:(C語言實現(xiàn)?)
比較簡單的尾遞歸實現(xiàn):
#includestdio.h
long?digui(int?n);??//遞歸函數(shù)聲明
int?main()
{
int?n;??
scanf("%d",n);
printf("the?result?is?%ld",digui(n));?//打印出遞歸值
return?0;
}
long?digui(int?n)??//遞歸函數(shù)部分
{
if(n1)???
return?n*digui(n-1);???//調(diào)用遞歸,讓n與n-1相乘,直到n1時
return?1;???//n1時,返回1,實現(xiàn)?n*(n-1)*(n-2)*……*3*2*1
}
這個是遞歸函數(shù):
recursion(int x,int y)
{
if(y-1 == x)return x;
else return x+recursion(x+1);
}
使用的時候用另個函數(shù)調(diào)用。
遞歸主要元素:入口,遞歸和結(jié)束。在定義遞歸函數(shù)時將這三個元素考慮進去就行;如: double callnext(int n)
{
if(n1) return callnext(n-1)+3;
else return 1;
}
int main()
{
int m;
scanf("%d",m);
printf("result=%f",callnext(m));
return 0;
}
入口:callnext(m);遞歸:if(n1) return callnext(n-1)+3中的callnext(n-1);結(jié)束:else return 1;整個執(zhí)行流程:callnext(m) 調(diào)用 callnext(m-1);callnext(m-1)調(diào)用callnext(m-1-1)。。。
callnext(2)調(diào)用callnext(1);callnext(1)=1;結(jié)束;
1、編寫遞歸函數(shù)求 1+2+3+……+n 的和;
2、編寫遞歸函數(shù)求 2*4*6*……*(2n) 的積;
3、編寫遞歸函數(shù)求 n 的階乘;
4、漢諾塔問題;
實際上很多問題都可以通過遞歸來實現(xiàn),但是看到你的情況估計較難的你實現(xiàn)不了,所以給你幾個簡單的練習一下,這樣可以增強對遞歸的理解,等理解的較為深入后再做稍微難一些的。
int abc(int a[],int n)
{
if(n==0)
return a[0];
else return a[n-1]*abc(a[],n-2);
}
或:
int ff(int a[],int n)
{
int sum=0;
int i
for(i=0;in;i++)
{
sum+=a[i];
}
return sum;
}
擴展資料:
數(shù)組類型說明 在C語言中使用數(shù)組必須先進行類型說明。
數(shù)組說明的一般形式為:類型說明符 數(shù)組名 [常量表達式],……; 其中,類型說明符是任一種基本數(shù)據(jù)類型或構(gòu)造數(shù)據(jù)類型。數(shù)組名是用戶定義的數(shù)組標識符。方括號中的常量表達式表示數(shù)據(jù)元素的個數(shù),也稱為數(shù)組的長度。
數(shù)組就是一次性定義相同數(shù)據(jù)類型的一組變量數(shù)組定義。
參考資料來源:百度百科-數(shù)組