A. C++緙栫▼ 緙栧啓閫掑綊鍑芥暟power(a,n)奼傚嚭a鐨刵嬈℃柟
紼嬪簭宸茬粡璋冭瘯榪囦簡錛屼綘鐪嬩笅鍚э紝鍙浠ョ殑璇濈粰涓濂借瘎
#include"iostream"
using namespace std;
float power(float a,int n)
{
if (n==1)return a;
else return a*=power(a,n-1);
}
int main()
{
float a;
int n;
cout<<"璇瘋緭鍏ュ疄鏁癮鍜姝f暣鏁n:"<<endl;
cin>>a>>n;
float i=power(a,n);
cout<<"n嬈℃柟鍚庯細"<<"a="<<i<<endl;
cout<<"n="<<n<<endl;
system("pause");
}
B. C++編程 用函數遞歸找一個數列中的最小值
intMin(int*iArray,intiIndex,intiLen)
{
if(iIndex==iLen-1)//遞歸到了最後一個數了,直接返回這個數
returniArray[iIndex];
else{
intsubMin=Min(iArray,iIndex+1,iLen);//遞歸查找後面的數的最小數
returniArray[iIndex]<=subMin?iArray[iIndex]:subMin;//跟當前的最小數比較查找最小值
}
}
調用:
intmin=Min(數組,0,數組長度);
C. 浠涔堟槸閫掑綊鍑芥暟
閫掑綊鍑芥暟鏄鎸囦竴縐嶇壒孌婄被鍨嬬殑鍑芥暟錛屽畠浼氬湪鍏跺畾涔夋垨瀹炵幇涓璋冪敤鑷韜銆
閫掑綊鏄涓縐嶅己澶х殑緙栫▼鎶鏈錛岀敤浜庤В鍐沖彲浠ュ垎瑙d負鏇村皬鐨勭浉浼奸棶棰樼殑闂棰樸傚湪閫掑綊鍑芥暟涓錛岄氬父浼氭湁涓涓鎴栧氫釜鍩烘湰鎯呭喌錛坆ase cases錛夛紝榪欎簺鏄鍑芥暟鍙浠ョ洿鎺ユ眰瑙h屾棤闇榪涗竴姝ラ掑綊鐨勬儏鍐點傛ゅ栵紝榪橀渶瑕佹湁閫掑綊鎯呭喌錛坮ecursive cases錛夛紝鍦ㄨ繖浜涙儏鍐典笅錛屽嚱鏁頒細閫氳繃璋冪敤鑷韜鏉ユ眰瑙f洿澶х殑闂棰樸
浠ヤ竴涓綆鍗曠殑鏁板﹀嚱鏁頒負渚嬶紝璁$畻涓涓鏁扮殑闃朵箻銆傞樁涔樺嚱鏁板彲浠ュ畾涔変負錛歯! = n * (n-1) * (n-2) * ... * 1銆傝繖鏄涓涓鍏稿瀷鐨勯掑綊闂棰橈紝鍥犱負涓涓澶ф暟鐨勯樁涔樺彲浠ュ垎瑙d負涓涓灝忔暟鐨勯樁涔樺拰璇ユ暟鐨勪箻縐銆傞掑綊鍑芥暟鍙浠ヨ繖鏍峰疄鐜幫細
鍦ㄨ繖涓渚嬪瓙涓錛屽熀鏈鎯呭喌鏄痭=0鏃訛紝姝ゆ椂鍑芥暟鐩存帴榪斿洖1銆傚逛簬鎵鏈夊叾浠栫殑n鍊礆紝鍑芥暟浼氳皟鐢ㄨ嚜韜鏉ヨ$畻(n-1)鐨勯樁涔橈紝鐒跺悗灝嗙粨鏋滀箻浠n銆傝繖涓榪囩▼浼氫竴鐩存寔緇錛岀洿鍒拌揪鍒板熀鏈鎯呭喌涓烘銆
鐒惰岋紝閫掑綊鍑芥暟闇瑕佽皚鎱庝嬌鐢錛屽洜涓哄畠浠鍙鑳戒細瀵艱嚧鏃犻檺寰鐜鎴栨爤婧㈠嚭銆傚傛灉閫掑綊娌℃湁姝g『璁劇疆鍩烘湰鎯呭喌錛屾垨鑰呴棶棰樼殑鍒嗚В鏂瑰紡涓嶆g『錛屽氨鍙鑳藉嚭鐜拌繖浜涢棶棰樸傚洜姝わ紝鍦ㄨ捐¢掑綊鍑芥暟鏃訛紝闇瑕佺『淇濇湁涓涓娓呮櫚鐨勭粓姝㈡潯浠訛紝騫朵笖姣忔¢掑綊璋冪敤閮借兘鏈濈潃榪欎釜鏉′歡鍓嶈繘銆
D. 編寫一個遞歸函數計算從1加到100的和
int fun(int x)
{
if(x>1)
return x+fun(x-1);
else
return x;
}
void main()
{
int sum;
sum=fun(100);
printf("sum=%d
",sum);
}
(4)遞歸函數編程擴展閱讀
編程語言中,函數Func(Type a,……)直接或間接調用函數本身,則該函數稱為遞歸函數。遞歸函數不能定義為內聯函數。
在數學上,關於遞歸函數的定義如下:對於某一函數f(x),其定義域是集合A,那麼若對於A集合中的某一個值X0,其函數值f(x0)由f(f(x0))決定,那麼就稱f(x)為遞歸函數。
一個含直接或間接調用本函數語句的函數被稱之為遞歸函數,在上面的例子中能夠看出,它必須滿足以下兩個條件:
1) 在每一次調用自己時,必須是(在某種意義上)更接近於解;
2) 必須有一個終止處理或計算的准則。