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) 必须有一个终止处理或计算的准则。