/*递归*/
#include<iostream>
using namespace std;
int fac(int n)//求n的阶乘
{
if(n==1)
{
return 1;
}
return n*fac(n-1);
}
void ij(int i,int j)//从i到j进行打印
{
if(i>j)
{
return;
}
cout<<i<<endl;
ij(i+1,j);
}
int add(int arr[],int k)//将数组中的元素进行加法运算
{
if(k==1)
{
return arr[0];
}
return arr[k-1]+add(arr,k-1);
}
void str(string s,int k)//反转字符串
{
if(k==0)
{
return;
}
cout<<s[k-1];
str(s,k-1);
}
int fib(int n)//斐波那契数列
{
if(n==1||n==2)
{
return 1;
}
return fib(n-1)+fib(n-2);
}
int gcc(int n,int m)//最大公约数
{
if(n%m==0)
{
return m;
}
else
{
return gcc(m,n%m);
}
}
void insertsort(int arr[],int k)//插入排序改递归
{
if(k==0)
{
return;
}
insertsort(arr,k-1);
int x=arr[k];
int index=k-1;
while(x<arr[index]&&index>0)
{
arr[index+1]=arr[index];
index--;
}
arr[index+1]=x;
}
void printHanoiTower(int N,string from,string to,string help)//汉若塔
{
if(N==1)
{
cout<<"move"<<N<<"from"<<from<<"to"<<to<<endl;
return;
}
printHanoiTower(N-1,from,help,to);
cout<<"move"<<N<<"from"<<from<<"to"<<to<<endl;
printHanoiTower(N-1,help,to,from);
}
int binarysearch(int arr[],int key,int low,int high)//二分查找
{
int mid=(low+high)/2;
int q=arr[mid];
if(q<key)
{
return binarysearch(arr,key,mid+1,high);
}
else if(q>key)
{
return binarysearch(arr,key,low,mid-1);
}
else
{
return mid;
}
}
int main()
{
//int f=fac(5);
//cout<<f;
//ij(1,5);
int a[]={1,2,5,4};
int p=add(a,4);
cout<<p;
string s="qwert";
str(s,5);
cout<<endl;
cout<<fib(5)<<endl;
cout<<gcc(9,3)<<endl;
insertsort(a,3);
for(int i=0;i<4;i++)
{
cout<<a[i];
}
printHanoiTower(6,"A","B","C");
cout<<binarysearch(a,5,0,3);
return 0;
}
蓝桥杯课程 递归
猜你喜欢
转载自blog.csdn.net/weixin_43140561/article/details/87902446
今日推荐
周排行