蓝桥杯课程 递归

/*递归*/ 
#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